78

SAN SSL証明書のサブジェクト代替名をプログラムで確認する方法はありますか?

たとえば、次のコマンドを使用すると、すべての SAN ではなく、多くの情報を取得できます。

openssl s_client -connect www.website.com:443 

どうもありがとうございました!

4

4 に答える 4

144

証明書のサブジェクト代替名 (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:

ファイルから直接 SAN を取得するにはどうすればよいですか?

openssl s_clientこのため、コマンドは必要ありません。コマンドを追加-in MyCertificate.crtして、openssl x509grep をもう一度パイプします。例:

openssl x509 -noout -text -in MyCertificate.crt | grep DNS:
于 2012-10-29T20:11:52.170 に答える