SAN SSL証明書のサブジェクト代替名をプログラムで確認する方法はありますか?
たとえば、次のコマンドを使用すると、すべての SAN ではなく、多くの情報を取得できます。
openssl s_client -connect www.website.com:443
どうもありがとうございました!
SAN SSL証明書のサブジェクト代替名をプログラムで確認する方法はありますか?
たとえば、次のコマンドを使用すると、すべての SAN ではなく、多くの情報を取得できます。
openssl s_client -connect www.website.com:443
どうもありがとうございました!
証明書のサブジェクト代替名 (SAN) を取得するには、次のコマンドを使用します。
openssl s_client -connect website.com:443 </dev/null 2>/dev/null | openssl x509 -noout -text | grep DNS:
まず、このコマンドは必要なサイト (website.com、SSL のポート 443) に接続します。
openssl s_client -connect website.com:443
次に、それを次のコマンドにパイプ ( |
) します。
openssl x509 -noout -text
これにより、証明書ファイルが取得され、その詳細がすべて出力されます。この-noout
フラグは、必要のない (base64 でエンコードされた) 証明書ファイル自体を出力しないようにします。-text
フラグは、証明書の詳細をテキスト形式で出力するように指示します。
通常、気にしない大量の出力 (署名、発行者、拡張機能など) があるため、それを単純な grepにパイプします。
grep DNS:
SAN エントリはこれで始まるため、DNS:
それを含む行のみが返され、他のすべての情報が取り除かれ、必要な情報が残ります。
コマンドが正常に終了しないことに注意してください。openssl s_client
実際にはクライアントとして機能し、接続を開いたままにして、入力を待ちます。すぐに終了したい場合 (シェル スクリプトで出力を解析する場合など) は、単純にパイプecho
します。
echo | openssl s_client -connect website.com:443 | openssl x509 -noout -text | grep DNS:
openssl s_client
このため、コマンドは必要ありません。コマンドを追加-in MyCertificate.crt
して、openssl x509
grep をもう一度パイプします。例:
openssl x509 -noout -text -in MyCertificate.crt | grep DNS: