国/一般名のプロンプトをスキップしてopensslを作成することは可能ですか?


82

次のようなプロンプトをスキップしてopensslを作成する方法はありますか?

Country Name (2 letter code) [US]:
Organization Name (eg, company) [My Company Name LTD.]:
Common Name (eg, YOUR name) [something]:

で証明書を作成している間

openssl req -config openssl.cnf -new -x509 ...

これらのパラメータがopenssl.cnfファイルで提供されているという事実を考えると

例えば

countryName         = Country Name (2 letter code)
countryName_default     = US
countryName_min     = 2
countryName_max     = 2
0.organizationName      = Organization Name (eg, company)
0.organizationName_default  = My Company Name LTD.
commonName          = Common Name (eg, YOUR name)
commonName_max      = 64
commonName_default      = ${ENV::CN}

3
これらをコマンドラインでパラメータとして渡すことができます。構文を思い出せません。
indiv 2011

1
ありがとう、それはうまくいきます!-subj '/C=US/ST=Oregon/L=Portland/CN=www.madboa.com'行く方法です
Tzury Bar Yochay

回答:



35

別の解決策は、構成ファイルでpromptディレクティブを使用することです。OpenSsl:構成ファイル形式を
参照してください

prompt

値に設定すると、no証明書フィールドのプロンプトが無効になり、構成ファイルから直接値が取得されます。またdistinguished_nameattributesセクションとセクションの予想される形式も変更されます。

distinguished nameattributeセクションには2つの異なる形式があります。

プロンプトオプションがに設定されているno場合、これらのセクションはフィールド名と値のみで構成されます。たとえば、

 CN=My Name
 OU=My Organization
 emailAddress=someone@somewhere.org

これにより、外部プログラム(GUIベースなど)がすべてのフィールド名と値を含むテンプレートファイルを生成し、それをに渡すことができreqます。

または、プロンプトオプションがないか、noに設定されていない場合、ファイルにはフィールドプロンプト情報が含まれています。次の形式の行で構成されます。

 fieldName="prompt"
 fieldName_default="default field value"
 fieldName_min= 2
 fieldName_max= 4

2
これは受け入れられた答えでなければなりません。すでに設定ファイルがある場合は、/ CN / O / Cオプションを指定しても意味がありません。
Aditya VikasDevarapalli20年

1
@AdityaVikasDevarapalliこの回答を書いてから8年後、私は同意します。しかし、私は偏見があります。
VonC

15

設定ファイルを生成し、[req]セクションにprompt = noを入力できます。

例えば:

[req]
prompt = no
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
C = US
ST = California
L = Los Angeles
O = Our Company Llc
#OU = Org Unit Name
CN = Our Company Llc
#emailAddress = info@example.com

[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = example.com
DNS.2 = www.example.com

次に、実行します。

openssl req -new -sha256 -config THATFILE.conf -key example.com.key -out example.com.csr

4

混合アプローチはサポートされていません

いくつかの静的フィールドをopenssl.cnfに配置し、-subjオプションを介していくつかの(CN)を指定する、混合アプローチが可能であると考えるのは直感的かもしれません。ただし、それは機能しません。

私はシナリオをテストしました

  • openssl.cnfセクションにC、ST、L、O、およびOUを配置します req_distinguished_name
  • で実行さopenssl reqれました -subj=/CN=www.mydom.com

opensslは、必須の国名フィールドが欠落しており、生成された証明書の件名にCNが含まれていると不満を述べました。のように思える-subjオプションは完全に件名をオーバーライドし、単一のフィールドを更新することはできません。

これにより、サブジェクトフィールドを相互に排他的に提供する次の3つのアプローチすべてが作成されます。

  • プロンプト
  • 設定ファイル
  • -subj オプション

これを確認していただきありがとうございます。これは本当にバグとしてフラグを立てる必要があります。実行すると、の-subj後に指定しても無視され-configます。
オテウス

1

-batchオプションのパラメータは、原因となるopenssl req情報のフィールドのいずれかのプロンプトではないにコマンドを。自己署名証明書を自動化するための構成ファイルなしで、この方法で使用します。

ヘルプに記載されています:

openssl help req
...
...
-batch              Do not ask anything during request generation

私はそれが実際には設定ファイルなしではないと思います:指定されていない場合、それはデフォルトの場所から取得され、そこにインストールされていない場合は失敗します。
MAF-ソフト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.