web-dev-qa-db-ja.com

証明書署名リクエストのサブジェクトの別名は、署名に耐えられないようです

そのため、私は a previous (splendid)回答のレシピに従って、subjectAltName=IP:1.2.3.4という形式のサブジェクトの別名を持つ証明書署名要求を作成できました。

そのCSRをopenssl req -in key.csr -textで検査すると、対応するセクションが表示されます。

Requested Extensions:
  X509v3 Subject Alternative Name: 
    IP Address:1.2.3.4

次に、次のような自己署名鍵でCSRに署名します。

openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -CAcreateserial \
  -in key.csr -out key.crt

結果の証明書(openssl x509 -in key.crt -textで検査した場合)は、そのセクションを識別しません。

これは単なる表示パラメータのアーティファクトですか、それとも、署名を行うときに拡張機能を含める必要があることをopenssl x509に指示する必要がありますか?

MacOS High Sierra(openssl versionレポートLibreSSL 2.2.7)でOpenSSLを使用していますが、その構成をデフォルトから変更していません。鍵は最終的にDebian(Stretch)サーバー間で使用されるため、このコンテキストで役立つ場合は、そこで鍵生成を実行できます。

2
Drux

次のコマンドは明らかに問題を解決します:

openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -CAcreateserial \
  -extensions SAN \
  -extfile <(cat /etc/ssl/openssl.cnf \
    <(printf "\n[SAN]\nsubjectAltName=IP:1.2.3.4")) \
  -in key.csr -out key.crt

同じレシピopenssl req、ただしextensionsextfileではなく、2つのパラメーターreqextsconfigを使用します。

このコマンドは、関連するセクションを印刷して目的の結果をすばやく確認するのに役立ちました。

openssl x509 -in key.crt -text | grep "Subject Alternative Name" -C 1
5
Drux