web-dev-qa-db-ja.com

sec_error_unknown_issuer、ただしFirefoxおよびIE6のみ

最近、サイトのSSL証明書を更新しましたが、最初は証明書が正しくインストールされているように見えましたが、数時間前に特定のブラウザーやバージョンでHTTPS接続が正しく認証されなくなったことに驚いていました。

現在、次のブラウザでOKを認証しています。

  • Internet Explorer 8
  • Internet Explorer 9
  • Google Chrome 8
  • Opera 11
  • Firefox 3.6.21(Windows 2000の場合)

ただし、次のものでは適切に認証されません。

  • Firefox 3.6.13(Windows XPの場合)
  • Firefox 6.01(Windows 7の場合)
  • Internet Explorer 6(Windows 200)

証明書の証明書パスはGeoTrust Global CA > RapidSSL CA > secure.mydomain.comです。

この問題を説明できるものは何ですか?これはインストールの問題ですか?ブラウザの問題?証明書の問題?

この問題を解決するにはどうすればよいですか?

6
scatmoi

私は同じ問題を抱えていました Network Solutionsから)基本的なSSL証明書を購入し、nginxの下にインストールして、OperaとIE-しかし、Firefox 3.6.12ではありません。これが私が問題を解決した方法です。私は自分のVPSへのroot/Shellアクセス権を持っていることに注意してください。

ソリューションを見つける最初のステップは---(Qualys を使用することでした(- this other answer に従って)。 チェーンは不完全だった だと教えてくれた。

次に、テスト/デバッグに OpenSSL を使用しました。シェルアクセスがあると仮定すると、次のコマンドを実行できます(qまたはCTRL-Cで切断):

openssl s_client -connect mysite.com:443

また、おそらく「ローカル発行者証明書を取得できません」というエラーが表示されます。これは、Firefoxを実行せずに、シェルで動作するかどうかをテストする方法でもあります。

SSL証明書チェーン

一部のブラウザは、有名な認証局によって署名された証明書について不満を言うかもしれませんが、他のブラウザは問題なく証明書を受け入れるかもしれません。これは、発行機関が特定のブラウザで配布される既知の信頼された認証機関の証明書ベースに存在しない中間証明書を使用してサーバー証明書に署名したために発生します。この場合、認証局は一連のチェーン証明書を提供し、これを署名済みサーバー証明書に連結する必要があります。サーバー証明書が表示される必要がありますbefore結合されたファイル内のチェーンされた証明書

Nginxの設定

私の場合、Network Solutionsから3つのファイルを取得しました-mysite.com.crtAddTrustExternalCARoot.crtNetworkSolutionsDVServerCA.crtbundleファイルはありませんでしたが、他の証明書から作成することは可能です。試行錯誤の末、必要なものは次のとおりです。

$ 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の設定

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>
8
Cyclops

ドメインで次のテストを試してください。

Qualys: https://www.ssllabs.com/ssldb/index.html

DigiCert: http://www.digicert.com/help/

どちらも、ランダムなSSL証明書の問題を特定するのに非常に便利です。

5
Terence Johnson

私はこれを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

(あなたのクラスレベルに応じて)

1
user227228

証明書には、発行者の証明書へのURLが付いた特別なAuthority Information Access拡張( RFC-328 )を含めることができます。ほとんどのブラウザーは、AIA拡張機能を使用して、欠落している中間証明書をダウンロードして、証明書チェーンを完成させることができます。ただし、一部のクライアント(古いブラウザとモバイルブラウザ、OpenSSL)はこの拡張機能をサポートしていないため、このような証明書は信頼できないものとして報告されます。

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

発行者から中間証明書をフェッチし、それらを自分で連結できるはずです。手順を自動化するスクリプトを作成しました。AIA拡張をループして、正しくチェーンされた証明書の出力を生成します。 https://github.com/zakjan/cert-chain-resolver

1
zakjan