拡張機能を使用したOpenSSL署名要求

拡張機能を使用したOpenSSL署名要求

私の開発環境には、小規模の自己署名CAが設定されています。さまざまな属性を持つさまざまなサーバー証明書を作成したいと思います。私のアプローチは、各サーバーに特定の拡張を作成することです。次のセクションを含む大きなopenssl.cnfがあります。

[ server0_http ]

nsCertType                      = server
nsComment                       = "HTTP server0"
basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=@server0_http_altnames

[ server0_http_altnames ]
URI.1 = https://server.domain.tld
URI.2 = http://server.domain.tld
IP.1  = 1.2.3.4
DNS.1 = server.doamin.tld

openssl次に、パラメータを使用してCSRを作成するとき-config myCustomOpenssl.cnf -reqexts server0_http。リクエストを確認すると、openssl req -text -noout -in myrequest.csrすべてが完璧に見えます。

しかし、要求に署名した後、「X509v3拡張キーの使用」および「X509v3サブジェクト代替名」セクションは消えました。この問題を解決するために、-extfile myCustomOpenssl.cnf -reqexts server0_http署名呼び出しにパラメータも追加しましたopenssl

これが予想される動作ですか?私はいつもcsrファイルだけで、要件に応じて、つまりすべての部分で証明書を生成するのに十分だと思いました。現在私のシステムがどのように機能するかは、欠けている部分を持つ証明書を取得することです。必要な証明書を取得するには、csrファイルと要求を生成するために使用されたopenssl構成ファイルの対応するセクションを指定する必要があります。小さな設定では問題になりませんが、大規模なCAになるとかなり混乱します。これは本当ですか、それともopensslを間違って使用していますか?

ベストアンサー1

それを発見!私が説明するのはopensslの通常の予想動作です。デフォルトでは、カスタム拡張は証明書にコピーされません。

opensslが要求された拡張を証明書にコピーするには、copy_extensions = copy署名を指定する必要があります。通常のインストールでは、この行をのdefault_CAセクションに追加する必要がありますopenssl.cnf

openssl.cnf(少なくとも)Centosに付属のバージョンでは、この行は「注意して使用してください」という警告とともにコメントとして含まれています。注意しないと、要求者はこの機能を乱用してCA証明書を発行するように促す可能性があります。

おすすめ記事