openssl からの証明書チェーンはどこから来るのでしょうか?

openssl からの証明書チェーンはどこから来るのでしょうか?

flo2cash.com のチェーンを検証しようとしていますが、openssl から次のメッセージが表示されます: openssl s_client -showcerts -connect flo2cash.com:443
CONNECTED(00000003) depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA depth=0 OU = Domain Control Validated, OU = Hosted by FreeParking Ltd, OU = COMODO SSL, CN = flo2cash.com

ルートが「AddTrust External CA Root」であることを示します。Chrome と Firefox の両方で、証明書が「COMODO RSA Certification Authority」をルートとするチェーンの 3 つのレベルのみが表示されます。

チェーン内の最後の証明書を確認すると、次のようになります。 subject= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority issuer= /C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root notBefore=May 30 10:48:38 2000 GMT notAfter=May 30 10:48:38 2020 GMT

この証明書は本当に古いです。

これは、私のマシン (最新のパッチが適用された Fedora 25) で見つかった CA バンドルとブラウザーに含まれているものです。

subject= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority issuer= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority notBefore=Jan 19 00:00:00 2010 GMT notAfter=Jan 18 23:59:59 2038 GMT

その古い証明書はどこかから来ているに違いありません。

答え1

私のMintラップトップには古い証明書:

$ openssl x509 -noout -subject -issuer -in /usr/share/ca-certificates/mozilla/COMODO_RSA_Certification_Authority.crt 
subject= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
issuer= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority

openssl s_clientCOMODO RSA Certification Authority上記のルートによって署名された最も優れた CA 証明書を返します。

$ openssl s_client -connect flo2cash.com:443
CONNECTED(00000003)
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify return:1
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = Hosted by FreeParking Ltd, OU = COMODO SSL, CN = flo2cash.com
verify return:1
---

上記のルート CA 証明書 ( )/etc/ca-certificates.confを含む行を編集して選択解除します。mozilla/AddTrust_External_Root.crt

#
# line begins with # is comment.
# line begins with ! is certificate filename to be deselected.
#
mozilla/ACCVRAIZ1.crt
mozilla/ACEDICOM_Root.crt
!mozilla/AC_Raíz_Certicámara_S.A..crt
mozilla/Actalis_Authentication_Root_CA.crt
!mozilla/AddTrust_External_Root.crt
mozilla/AddTrust_Low-Value_Services_Root.crt
mozilla/AddTrust_Public_Services_Root.crt
mozilla/AddTrust_Qualified_Certificates_Root.crt

実行しupdate-ca-certificatesてキャッシュを再構築します。

その後、ブラウザと同じチェーンが取得されます。

$ openssl s_client -connect flo2cash.com:443 -showcerts
CONNECTED(00000003)
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = Hosted by FreeParking Ltd, OU = COMODO SSL, CN = flo2cash.com
verify return:1
---

クライアントがエンド エンティティ証明書からルート CA 証明書に構築するパスは、クライアント内にプログラムされたロジックに依存します。これは仕様で定義されていないため、各クライアントの開発者の解釈に依存します。

OpenSSL で両方のルート CA 証明書が有効になっている場合、最初に表示されるパスが選択されます。ブラウザは異なるパスを選択することもできます。

答え2

古い証明書はどれですか?Comodo RSA 認証局の証明書 AddTrust外部CAルートからの証明書がサーバーから送信されます。AddTrust 外部の証明書システムのトラストストアから取得する必要があります。これはサーバーから送信されるものではなく、サーバーから送信された場合でも、OpenSSL はサーバーから受信したルートを正しく破棄し、ローカルのトラストストアで見つかったルートのみを信頼します。私は Fedora を使用していませんが、CentOS には/etc/pki/tls/certs/ca-bundle.crtインストール時に含まれていますca-certificates(おそらく RHEL でも同様です)。

はい、この AddTrust ルートは、まだアクティブな古い CA ルートの 1 つです。ブリッジ証明書は親と完全に (非現実的に) 一致していませんが、これは日付が遡ったものであることは確かです。ブリッジ証明書は SHA384 で署名されていますが、FIPS180-2 は 2002 年まで公開されておらず、広く実装されていませんでした (たとえば、Windows XP は 2008 年の SP3 まで SHA2 署名証明書を実装していませんでした)。

Comodo RSA独自のルート2010-01-19 00:00:00 より前に署名されていませんが、日付が遡っているか、またはしばらく棚上げされていた可能性があります。SHA384 で署名されていますが、AIR では、2014 年の初め (NIST の 2 回目の期限) まで、どのパブリック CA も SHA2 の発行とチェーンを開始しておらず、CABforum といくつかの主要なブラウザーが実際に SHA1 について苦情を言い始めた 2015 年後半までほとんど行われていません。Comodo がこの範囲のどこに位置していたかは覚えていませんが、時間の経過とともに簡単に追跡できる唯一のトラストストアである Oracle-formerly-Sun Java は、2015-06 年の 8u51 まで追加されませんでした。comodorsaca(addtrustexternalca少なくとも2008-06 の 6u7 までです。それ以前のデータはありません。

Comodoのウェブサイトの少なくとも一部有効期限が 3 年未満であるにもかかわらず、ブリッジ証明書から AddTrust への信頼チェーンは正しいものとして表示されます。

関連情報