1. ホーム
  2. ssl

[解決済み] OpenSSL: Experian URL の最初の証明書を検証できません。

2022-01-30 15:21:27

質問

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

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

問題は、ベリファイのリターンコードで接続が終了することです。21 (unable to verify the first certificate)で接続が終了することです。

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

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

しかし、なぜ最初の証明書を確認することができないのかがわかりません。 よろしくお願いします。

回答の全文はこちらでご覧いただけます。 https://gist.github.com/1248790

解決方法は?

最初のエラーメッセージは、問題の詳細を教えてくれています。

<ブロッククオート

verify error:num=20:unable to get local issuer certificate.

エンドエンティティサーバ証明書の発行元証明機関は

<ブロッククオート

ベリサインClass3セキュアサーバ認証局 - G3

CAファイルをよく見てください。 ではなく この証明書は中間CAであるため、この証明書を見つけることはできません。 似たような名前の VeriSignのG3 Public Primary CAです。

しかし、なぜ他の接続は成功し、この接続は成功しないのでしょうか?問題は、サーバーの設定ミスです( -debug オプション)。良いサーバは、ハンドシェイク時に証明書チェーン全体を送信するため、必要な中間証明書を提供します。

しかし、失敗しているサーバーが送ってくるのは のみ はエンドエンティティ証明書であり、OpenSSL は、欠落している中間証明書を "オンザフライでダウンロードすることができません (Authority Information Access 拡張を解釈すれば可能です)。そのため、次のようにすると失敗します。 s_client しかし、例えばFireFoxで同じURLをブラウズすると成功します(FireFoxは"certificate discovery"機能をサポートしています)。

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