次のようなプロンプトをスキップする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}
別の解決策は、構成ファイルでPrompt
ディレクティブを使用することです。
「 OpenSsl:構成ファイル形式 」を参照
Prompt
値
no
に設定すると、証明書フィールドのプロンプトが無効になり、設定ファイルから直接値が取得されます。また、distinguished_name
およびattributes
セクションの予期される形式も変更します。
distinguished name
セクションとattribute
セクションには2つの別個の形式があります。プロンプトオプションが
no
に設定されている場合、これらのセクションはフィールド名と値のみで構成されます:たとえば、
CN=My Name
OU=My Organization
[email protected]
これにより、外部プログラム(GUIベースなど)がすべてのフィールド名と値を含むテンプレートファイルを生成し、
req
に渡すことができます。または、プロンプトオプションが指定されていないか、noに設定されていない場合、ファイルにはフィールドプロンプト情報が含まれます。次の形式の行で構成されます。
fieldName="Prompt"
fieldName_default="default field value"
fieldName_min= 2
fieldName_max= 4
構成ファイルを生成し、[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 = [email protected]
[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
混合アプローチはサポートされていません
Openssl.cnfにいくつかの静的フィールドを置き、-subj
オプション。ただし、それは機能しません。
シナリオをテストしました
req_distinguished_name
およびopenssl req
with -subj=/CN=www.mydom.com
。opensslは、必須の国名フィールドが欠落しており、生成された証明書の件名にCNが含まれていることを訴えました。のように思える -subj
オプションは、件名を完全に上書きし、単一フィールドの更新を許可しません。
これにより、サブジェクトフィールドを提供する次の3つのアプローチすべてが互いに排他的になります。
-subj
オプション