web-dev-qa-db-ja.com

証明書にサブジェクトの別名がありません

フィールドのサブジェクトの代替名を含むCSRを生成しました。

openssl req -out mycsr.pem -new -key mykey.pem -days 365

これを検査すると、新しいフィールドが存在するため、期待どおりに見えます。

X509v3 Subject Alternative Name:
    DNS: my.alt.dns

ただし、これを使用して証明書に署名すると、何らかの理由でそのフィールドが省略されます。

次のコマンドで生成します。

openssl ca -out mycert.pem -infiles mycsr.pem

それが含まれるために私のCA証明書が同じAlt名を含まなければならないということはあり得ますか?

18
jimmy

以下を使用できます。

copy_extensions = copy 

CA_defaultセクションのopenssl.cnf

ただし、このスレッドで指摘されているように、CSRの拡張機能を信頼できることが確実な場合のみ http://openssl.6102.n7.nabble.com/subjectAltName-removed-from-CSR-when -signing-td26928.html

参照: OpenSSLを使用して、SubjectAltNameで自己署名証明書を生成するにはどうすればよいですか?

17
Hans Z.

システム全体のopenssl.confを編集したくない場合は、.crtから.csrにSANを追加するためのネイティブのopenssl CLIオプションがあります。使用する必要があるのは、opensslの-extfileおよび-extensions CLIパラメータだけです。

次に例を示します。

openssl x509 -req -days 3650 -in alice.csr -signkey aliceprivate.key -out alice.crt -extfile alice-csr.conf -extensions v3_req

これには、次のようなalice-csr.confファイルが必要です(適切なデータを入力してください)。このファイルは、.csrを生成するためにopenssl req -new -key aliceprivate.key -out alice.csr -config alice-csr.confコマンドで使用されました。

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

[req_distinguished_name]
C = DE
ST = Thuringia
L = Erfurt
O = Alice Corp
OU = Team Foo
CN = server-alice

[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = server-alice
DNS.2 = localhost

-extensions v3_reqオプションは、ファイル[v3_req]alice-csr.confセクションに対応していることを覚えておいてください。ここでは、サブジェクトの別名を定義します。

すべてのステップを再現できる完全に理解できる例を常に高く評価しているので、Spring Bootマイクロサービスを特徴とするサンプルプロジェクトを作成しました: https://github.com/jonashackt/spring-boot-rest-clientcertificates-docker-compose

17
jonashackt

代替名を使用してCSRに署名する方法については、こちらで詳しく説明しています: https://www.feistyduck.com/library/openssl-cookbook/online/ch-openssl.html#creating-certificates-valid-for-multiple-hostnames

つまり、alt名のみを含むsomething.extファイルを作成します。

subjectAltName = DNS:*.my.alt.dns, DNS:my.alt.dns

次に、このファイルをopenssl x509 -req ...コマンドで参照します:-extfile something.ext。これは、CSRの準備時ではなく、署名時に発生することに注意してください。

1
Paul Lysak