Webサイトから、次のことができます。
openssl s_client -showcerts -verify 5 -connect stackexchange.com:443 < /dev/null
これにより、証明書チェーンとサーバーが提示したすべての証明書が表示されます。
これらの2つの証明書をファイルに保存すると、次のように使用できますopenssl verify
。
$ openssl verify -show_chain -untrusted dc-sha2.crt se.crt
se.crt: OK
Chain:
depth=0: C = US, ST = NY, L = New York, O = "Stack Exchange, Inc.", CN = *.stackexchange.com (untrusted)
depth=1: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA (untrusted)
depth=2: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA
この-untrusted
オプションは、中間証明書を提供するために使用されます。se.crt
検証する証明書です。depth = 2の結果は、システムの信頼できるCAストアからのものです。
中間証明書がない場合は、検証を実行できません。それがX.509の仕組みです。
証明書によっては、中間体を取得するためのURIが含まれている場合があります。例として、openssl x509 -in se.crt -noout -text
含まれるもの:
Authority Information Access:
OCSP - URI:http://ocsp.digicert.com
CA Issuers - URI:http://cacerts.digicert.com/DigiCertSHA2HighAssuranceServerCA.crt
その「CA発行者」URIは中間証明書を指します(DER形式なのでopenssl x509 -inform der -in DigiCertSHA2HighAssuranceServerCA.crt -out DigiCertSHA2HighAssuranceServerCA.pem
、OpenSSLでさらに使用するために変換するために使用する必要があります)。
実行openssl x509 -in /tmp/DigiCertSHA2HighAssuranceServerCA.pem -noout -issuer_hash
するとgetを取得します244b5494
。これは、システムルートCAストアで検索できます/etc/ssl/certs/244b5494.0
(.0
名前に追加するだけです)。
あなたのためにすべてを行うための素敵で簡単なOpenSSLコマンドがあるとは思いません。