最近、サイトのSSL証明書を更新しましたが、最初は証明書が正しくインストールされているように見えましたが、数時間前に特定のブラウザーやバージョンでHTTPS接続が正しく認証されなくなったことに驚いていました。
現在、次のブラウザでOKを認証しています。
ただし、次のものでは適切に認証されません。
証明書の証明書パスはGeoTrust Global CA > RapidSSL CA > secure.mydomain.com
です。
この問題を説明できるものは何ですか?これはインストールの問題ですか?ブラウザの問題?証明書の問題?
この問題を解決するにはどうすればよいですか?
ソリューションを見つける最初のステップは---(Qualys を使用することでした(- this other answer に従って)。 チェーンは不完全だった だと教えてくれた。
次に、テスト/デバッグに OpenSSL を使用しました。シェルアクセスがあると仮定すると、次のコマンドを実行できます(qまたはCTRL-Cで切断):
openssl s_client -connect mysite.com:443
また、おそらく「ローカル発行者証明書を取得できません」というエラーが表示されます。これは、Firefoxを実行せずに、シェルで動作するかどうかをテストする方法でもあります。
一部のブラウザは、有名な認証局によって署名された証明書について不満を言うかもしれませんが、他のブラウザは問題なく証明書を受け入れるかもしれません。これは、発行機関が特定のブラウザで配布される既知の信頼された認証機関の証明書ベースに存在しない中間証明書を使用してサーバー証明書に署名したために発生します。この場合、認証局は一連のチェーン証明書を提供し、これを署名済みサーバー証明書に連結する必要があります。サーバー証明書が表示される必要がありますbefore結合されたファイル内のチェーンされた証明書
私の場合、Network Solutionsから3つのファイルを取得しました-mysite.com.crt
、AddTrustExternalCARoot.crt
、NetworkSolutionsDVServerCA.crt
。 bundleファイルはありませんでしたが、他の証明書から作成することは可能です。試行錯誤の末、必要なものは次のとおりです。
$ cat mysite.com.crt NetworkSolutionsDVServerCA.crt > mysite.com.chain.crt
最後のステップは、新しいファイルでnginxサーバーを再構成することでした:
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/certs/mysite.com.chain.crt;
ssl_certificate_key /etc/ssl/private/mysite.com.key;
server_name mysite.com;
# and so on
}
バンドルで適切な証明書を取得し、nginxを再起動した後、openssl
はエラーを報告せず、Firefoxは問題なくページを取得し、Qualysはチェーンが有効であると報告しました。
Apacheを実行しているので、あなた(またはプロバイダー)は、正しいファイルの場所を SSL用に構成 する必要があります。そのうちの1つは欠落している中間チェーンファイルです:
<VirtualHost 192.168.0.1:443>
DocumentRoot /var/www/html2
ServerName www.yourdomain.com
SSLEngine on
SSLCertificateFile /path/to/your_domain_name.crt
SSLCertificateKeyFile /path/to/your_private.key
SSLCertificateChainFile /path/to/DigiCertCA.crt
</VirtualHost>
ドメインで次のテストを試してください。
Qualys: https://www.ssllabs.com/ssldb/index.html
DigiCert: http://www.digicert.com/help/
どちらも、ランダムなSSL証明書の問題を特定するのに非常に便利です。
私はこれをNginxとStartSSLに使用しますが、クラスCAも必要です。
cat ssl.pem ca.pem sub.class1.server.ca.pem> server.pem
または
cat ssl.pem ca.pem sub.class2.server.ca.pem> server.pem
(あなたのクラスレベルに応じて)
証明書には、発行者の証明書へのURLが付いた特別なAuthority Information Access拡張( RFC-328 )を含めることができます。ほとんどのブラウザーは、AIA拡張機能を使用して、欠落している中間証明書をダウンロードして、証明書チェーンを完成させることができます。ただし、一部のクライアント(古いブラウザとモバイルブラウザ、OpenSSL)はこの拡張機能をサポートしていないため、このような証明書は信頼できないものとして報告されます。
不完全な証明書チェーンの問題を手動で解決するには、証明書から信頼されたルート証明書(この順序で排他的)にすべての証明書を連結して、そのような問題を回避します。問題。信頼されたルート証明書は、システムのルート証明書ストアにすでに含まれているため、存在しないように注意してください。
発行者から中間証明書をフェッチし、それらを自分で連結できるはずです。手順を自動化するスクリプトを作成しました。AIA拡張をループして、正しくチェーンされた証明書の出力を生成します。 https://github.com/zakjan/cert-chain-resolver