web-dev-qa-db-ja.com

SSLルートCA証明書は、トラストストアに存在しますが、認識されません。どうして?

バックグラウンド:

  • Ubuntu Server 14.1064ビット(aws.Amazon.com/ec2)
  • COMODOからの安価なPositiveSSLサーバー証明書
  • COMODOからのZipアーカイブとしての1つのサーバー証明書、2つの中間CA証明書、および1つのルートCA証明書
  • シタデルのWebCithttpsd

問題:

連結された証明書チェーンは正しいようですが、検証は失敗します。

openssl s_client myhost:port

は、証明書チェーンと発行者とサブジェクトのペアがチェーン全体で正しく整列していることを示していますが、次のとおりです。

verify error:num=19:self signed certificate in certificate chain

ルートCA証明書はopensslによって受け入れられませんが、デフォルトではUbuntuサーバーのトラストストアにあります。

具体的には、COMODOから電子メールごとに受信したAddTrustExternalCARoot.crt/etc/ssl/certs/AddTrust_External_Root.pemにリンクする/usr/share/ca-certificates/mozilla/AddTrust_External_Root.crtは同一です。

ここで何が問題になっていますか?

6

少なくとも現在の(1.0.2a)までのOpenSSLにはバグがあります。ここでs_client-CA{path,file}引数はありません実際にはデフォルトのトラストストアを適切に使用しないため、そのトラストストアに従って有効な証明書の検証に失敗します。 (s_serverおよびs_timeもありますが、これらの検証を気にすることはまれです。) https://serverfault.com/questions/607233/how-to-make-openssl-s)を参照してください。 -client-using-default-ca 。修正はdevで発表されますが、リリースされて配布されるまでに時間がかかる場合があります。それまでの間、-CA*引数を明示的に指定する必要があります。 openssl verifyにはこのバグがないため、証明書/チェーンが有効であると正しく報告されていることに注意してください。

[〜#〜]更新[〜#〜]2015/08/26:修正がリリースされました2015/06/12 in1.0.1oおよび1.0.2c。また、他の何かを調査しているときに、RedHatパッケージは大丈夫だったかもしれないことがわかりました。より具体的には、私が理解しているopenssl-1.0.1e-30.el6.11のCentOSソースRPMは、RedHatのコピーです(ただし、簡単には確認できません)。openssl-1.0.1c-default-paths.patchには、2012/12 /日付のs_client.c s_server.c s_time.cへの変更が含まれています。 06は、2015/06/12アップストリーム修正と同等に見えます(テキストは同じではありませんが)。このパッチがRedHatおよびCentOSパッケージに適用されていると仮定すると、簡単に戻って確認することはできませんが、期待どおりに機能します。

4

最近、Rubyを使用してスクリプトを開発するときに、Comodo証明書で同様の問題に直面しました。結局、OpenSSLは、そのように見えたとしても、ストアにそれを持っていなかったのです。

これをテストするには、すべてのComodo中間証明書をダウンロードし、次のような証明書バンドルを作成します(ダウンロードしたものに応じて異なる証明書名を使用する必要があります)。

cat EssentialSSLCA_2.crt ComodoUTNSGCCA.crt UTNAddTrustSGCCA.crt AddTrustExternalCARoot.crt > yourDomain.ca-bundle

Comodoにはこれを行う方法に関する記事があります。

完了したら、OpenSSLを使用して証明書を再度確認し、コマンドラインで証明書ストアを指定してみてください。

openssl verify -untrusted yourDomain.ca-bundle cert.pem

その例は このUnixおよびLinux StackExchangeの記事 から適応されました。

それがどの証明書であるかを決定したら、その証明書をローカルの証明書ストアに追加できるはずです buntuについてはここで詳しく説明します 、次のようになります。

/ usr/share/ca-certificatesに追加のCA証明書用のディレクトリを作成します

Sudo mkdir /usr/share/ca-certificates/extra

'.crt'ファイルをディレクトリにコピーします

Sudo cp foo.crt /usr/share/ca-certificates/extra/foo.crt

Ubuntuに/ usr/share/ca-certificatesからの相対的な「.crt」ファイルのパスを/etc/ca-certificates.confに追加させます

Sudo dpkg-reconfigure ca-certificates
3
jotap

コモドルート証明書は信頼されなくなりました-理由がわからない場合は、「コモド盗まれた証明書」をグーグルで検索してください。

コモド証明書は安いかもしれませんが、その価値はその価格よりはるかに低いです。それは事実上価値がなく、信頼の連鎖が壊れています。

0
Eugen Rieck