web-dev-qa-db-ja.com

「openssl x509 -req」を使用してcsrファイルからcrtファイルにAltNameを追加する方法

私はWeb開発者であり、自己署名SSL証明書を使用してローカルでWebサイトをテストしたいと考えています。数日前、chromeがAltNameプロパティの不足について不平を言うようになるまでは、すべてがうまく機能していました。

OpenSSL CA

私は以下を使用して自分の権限を作成しました:

openssl req
    -x509
    -sha256
    -new
    -out dev.root.ca.crt
    -keyout dev.root.ca.key
    -days 3650

CNF

これらの値をデフォルトの値に追加して、openssl.cnfファイルを作成しました。

[ CA_default ]
copy_extensions = copy

[req]
req_extensions = v3_req

[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = $ENV::ALTNAME

シェル経由のALTNAME

次に、このコマンドを使用して.csrおよび.keyファイルを生成します。

set ALTNAME=DNS:dev.example.com

openssl req
    -newkey rsa:2048
    -out dev.example.com.csr
    -pubkey
    -new
    -keyout dev.example.com.key
    -sha256
    -config openssl.cnf

生成されたcsrファイルには、予想どおり代替名が含まれています。

AltnameはCSRからCRTに移行しません

次に、このコマンドを使用して.crtおよび.keyファイルを生成します。

openssl x509
    -req
    -in dev.example.com.csr
    -CA dev.root.ca.crt
    -CAkey dev.root.ca.key
    -CAcreateserial
    -out dev.example.com.crt
    -days 3650
    -sha256

ただし、生成されたcrtファイルに代替名は表示されなくなりました。

今何?

openssl x509 -reqコマンドにパラメーターを追加する必要がありますか?

3

'-extfile'パラメータを使用して修正しました。

追加の設定ファイル

以下を含むopenssl-ext.cnfファイルを追加しました:

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = $ENV::ALTNAME

'-extfile'パラメータを使用する

そして、その新しい設定ファイルをopensslコマンドに追加しました -extfileパラメータを使用

openssl x509
    -req
    -in dev.example.com.csr
    -CA dev.root.ca.crt
    -CAkey dev.root.ca.key
    -CAcreateserial
    -out dev.example.com.crt
    -days 3650
    -sha256
    -extfile openssl-ext.cnf
3