不完全なSSLチェーンを修正する方法


29

Go Daddy SSL証明書がインストールされており、Androidを除くすべての場所で正常に動作します。

https://www.ssllabs.com/ssltest/analyze.html は、チェーンが不完全であり、スタックオーバーフローで、Androidで間違った順序のSSLチェーンが失敗することを読みました。

しかし、どのように整理するのですか?私のサーバーで?SSL証明書自体のキーを再生成する必要がありますか?FTPで物事を移動しますか?

回答:


19

zakjanの答えをフォローアップすると、jQueryを使用して、Android Webビューで新しく安全なサーバーでAJAXリクエストを実行しようとしたときに問題が発生しました。ブラウザでは機能しましたが、アプリでは機能しませんでした。

このサイトを使用しました:https : //certificatechain.io/

Comodoから返された署名済みの.crtファイル(positiveSSL)のテキストに貼り付けたところ、必要なすべての連結が返されました。ドメイン+ "chain.crt"として保存しました(以下を参照)

次に、Apacheの設定で、その特定の仮想ホストに対して次のようなものを入力しました。

SSLEngine On
SSLCertificateFile /etc/ssl/localcerts/example_com.crt
SSLCertificateKeyFile /etc/ssl/localcerts/example.com.key
SSLCACertificateFile /etc/ssl/localcerts/example.com.chain.crt

その後、私のAndroidアプリのWebビューでは、ajaxを使用してサーバーにPOSTする際に問題は発生しませんでした。2.3.4を実行しているデバイスと、4.somethingを実行しているデバイスの2つの実世界のデバイスで試しました。2.3を実行しているエミュレーターで。すべてが働いた。

これがお役に立てば幸いです。


1
私にとっての鍵は、SSLCACertificateFileディレクティブを追加し、それが私の権限を与えてくれたCAファイルを指すことでした。単に他の証明書を証明書ファイルに連結しただけでは機能しません。
アレックスW

古いアパッチでは、SSLCACertificateFileの代わりにSSLCertificateChainFileを使用できます(設定でこのキーを検索しても見つからない場合に備えて)。
dr0i

信じられないほどですが、@ Richardの返信は、certificatechain.ioのサイトを使用しており、サイトは「... janŽákによるcert-chain-resolverに触発されました」と言っています。ありがとう@zakjan!
アンドレス・モラレス

それSSLCACertificateFileは私が逃したラインだった。最初は、一部のブラウザ/ OSから要求されたときにSSLが機能したが、他のブラウザ/ OSからは機能しなかったため、CAが新しすぎると思いました。decode.link/sslcheckerを使用すると、私の構成が間違っていたことが明らかになり、この回答には修正がありました。ありがとうございました!!
ジョセフパーセル

9

チェーンはcrtファイルにあり、元のSSLは機能していませんでした。

GoDaddyには2番目の証明書-gd_bundle.crtがあります

この情報をコピーして、サーバーにインストールされているcrtに追加します。

したがって、サーバー上の元のcrtには1つの証明書があり、その後は同じファイルに3つの証明書があります。これがチェーンです。

私はまだだssllabs.comにチェーンの問題でアンカーが含まれていますが、これは問題、または除外するだけのオプションではない-による- /security/24561/ssltest-chain-issues -contains-anchor / 24566#24566


2
チェーンの問題を取り除くためにgd_bundle.crtから最後の証明書を削除する
sanmai

7

証明書のすべての証明書を信頼できるルート証明書(この順序で排他的)に連結して、このような問題を防ぐことにより、不完全な証明書チェーンの問題を手動で解決できます。信頼されたルート証明書はシステムのルート証明書ストアにすでに含まれているため、そこに存在しないようにしてください。

発行者から中間証明書を取得し、それらを自分で連結できる必要があります。ところで、手順を自動化するスクリプトを作成しました。正しく連鎖された証明書の出力を生成するには証明書が必要です。https://github.com/zakjan/cert-chain-resolver


これは、証明書が正しくセットアップされているとローカルマシンに "トリック"させるだけのソリューションのように聞こえます。
アレックスW

いや。出力証明書バンドルは、Webサイトのコンテンツを送信するサーバーにアップロードされることになっています。すべてのクライアントは、その中間物とともに証明書を受け取ります。
ザクジャン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.