web-dev-qa-db-ja.com

OpenSSL:Experian URLの最初の証明書を検証できません

Ubuntu 10.10でOpenSSLクライアントを使用して、ExperianへのSSL接続を確認しようとしています。

openssl s_client -CApath /etc/ssl/certs/ -connect dm1.experian.com:443

問題は、接続がVerifyリターンコードで終了することです:21(最初の証明書を検証できません)。

証明書リストを確認しましたが、Experianの署名に使用された証明書(VeriSign Class 3 Secure Server CA-G3)がリストに含まれています。

/etc/ssl/certs/ca-certificates.crt 

それでも、最初の証明書を検証できない理由はわかりません。前もって感謝します。

全体の応答は次のとおりです: https://Gist.github.com/124879

67
pdjota

最初のエラーメッセージは、問題の詳細を示しています。

検証エラー:num = 20:ローカル発行者証明書を取得できません

エンドエンティティサーバー証明書の発行認証局は

VeriSignクラス3セキュアサーバーCA-G3

CAファイルをよく見てください。not中間CAであるため、この証明書が見つかります-見つかったのはsimilar-named VeriSignのG3 Public Primary CAです。

しかし、なぜ他の接続は成功しますが、これは成功しませんか?問題は、サーバーの構成の誤りです(-debugオプションの使用を参照してください)。 「正常な」サーバーは、ハンドシェイク中に証明書チェーン全体を送信するため、必要な中間証明書が提供されます。

しかし、失敗しているサーバーは、エンドエンティティ証明書を送信しますのみ OpenSSLは、欠落している中間証明書を「オンザフライで」ダウンロードできません(Authority Information Access拡張機能を解釈することで可能になります) 。したがって、s_clientを使用して試行は失敗しますが、それでも、たとえば、 FireFox(「証明書の発見」機能をサポートします)。

問題を解決するための選択肢は、サーバーにチェーン全体を送信させることによりサーバー側でこれを修正するか、欠落している中間証明書をクライアント側パラメーターとしてOpenSSLに渡すことです。

95
emboss

エンボスの回答に追加情報を追加します。

簡単に言うと、証明書チェーンに間違った証明書があります。

たとえば、ほとんどの場合、認証局から3つのファイルが提供されます。

  • your_domain_name.crt
  • DigiCertCA.crt#(または認証局の名前は何でも)
  • TrustedRoot.crt

ほとんどの場合、これらのファイルはすべて1つのバンドルに結合されています。

-----BEGIN CERTIFICATE----- 
(Your Primary SSL certificate: your_domain_name.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(Your Intermediate certificate: DigiCertCA.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(Your Root certificate: TrustedRoot.crt) 
-----END CERTIFICATE-----

バンドルを作成しても、古いバージョンまたは誤ったバージョンの中間証明書(この例ではDigiCertCA.crt)を使用すると、説明したとおりの症状が現れます。

認証局からすべての証明書を再ダウンロードし、新しいバンドルを作成します。

38
spuder

署名済み証明書をAmazon Elastic Load Balancerインスタンスにインストールするのと同じ問題に遭遇しました。

ブラウザー(Chrome)を介してすべてが見つかったようですが、Javaクライアントを介してサイトにアクセスすると、例外javax.net.ssl.SSLPeerUnverifiedExceptionが生成されました

私がやっていなかったことは、証明書をELBインスタンスにインストールするときに「証明書チェーン」ファイルを提供することでした( https://serverfault.com/questions/419432/install-ssl-on-Amazon-elastic-loadを参照してください-balancer-with-godaddy-wildcard-certificate

署名された公開キーは署名機関からのみ送信されたため、独自の証明書チェーンファイルを作成する必要がありました。ブラウザーの証明書ビューアーパネルを使用して、署名チェーンの各証明書をエクスポートしました。 (重要な証明書チェーンの順序、 https://forums.aws.Amazon.com/message.jspa?messageID=222086 を参照)

10
glidester