コマンドラインでSSL証明書を確認するにはどうすればよいですか?


52

ここに保存されているrsaキー、CAバンドル、および証明書が正常であることを検証/検証しようとしています。Webサーバーによって提供されていません。どうすればそれらを確認できますか?


openssl x509マニュアルのセクションをご覧ください。
アレックス・

ここでOpenSSL 検証マニュアルが役立ちます。また、このページにはいくつかの優れた例があります。
ステファンLasiewski

回答:


61

証明書がPEM形式であると仮定すると、次のことができます。

openssl verify cert.pem

「ca-bundle」が追加の中間証明書をPEM形式で含むファイルの場合:

openssl verify -untrusted ca-bundle cert.pem

インストールされているルート証明書のセット(など/etc/ssl/certs)を自動的に使用するようにopensslがセットアップされていない場合は、-CApathまたは-CAfileを使用してCAを指定できます。


9
警告、openssl verifyコマンドは予想よりも寛容です!デフォルトでは、指定されたCAfileのチェックに加えて、システムのcertsディレクトリ(例:/ etc / ssl / certs)で一致するCAもチェックします。この動作を防止し、CAfileで指定された特定のCA証明書を確認するには、存在しないディレクトリで-CApathオプションも渡す必要があります。例:openssl verify -verbose -CApath nosuchdir -CAfile cacert.pem server .crt
DSimon

2
さらに注意点があります。使用する-CApath nosuchdir場合は、server.crtとcacert.pemの組み合わせにルートCAを含める必要があります。opensslがそれらのファイルを使用して中間CAまでしか機能しない場合、文句を言います。
DSimon

にはそのようなファイルはありません/certs/。これは問題を引き起こしますか?サーバーが動作する状況でimがスタックするため、http curlは動作しますが、https .. curlはエラーを受け取ります。ウェブサイトが機能しなくなった場所。
ジョルジグヴィムラート

18

証明書チェーンを確認するためのワンライナーは次のとおりです。

openssl verify -verbose -x509_strict -CAfile ca.pem -CApath nosuchdir cert_chain.pem

これは、CAをどこにもインストールする必要はありません。

詳細については、https://stackoverflow.com/questions/20409534/how-does-an-ssl-certificate-chain-bundle-workを参照してください。


1
警告、-CAfileオプションは予想よりも寛容です。詳細については、受け入れられた回答に関する私のコメントを参照してください。
DSimon

1
@DSimon、-CApath nosuchdirこれを回答に追加しました。ありがとうございました。
ヴァジム

問題ありません。喜んでお手伝いします。:-)以前のコメントを投稿した後にわかった1つの警告:で指定されたファイル-CAfile自体が単なる中間証明書である場合、opensslは文句を言います。verifyルートCAまでの完全なチェーンが必要なため、これは正しい動作ですが、誤解を招く可能性があります。
DSimon

2
私のバージョン(OpenSSL 1.1.1 11 Sep 2018)では、引数を-CApath既存のディレクトリにする必要があります。
ジェイクコブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.