OCSP検証-ローカル発行者証明書を取得できません


17

SSLを最初からセットアップするのは初めてで、最初のステップを実行しました。ドメイン用にRapidSSLからSSL証明書を購入し、そこにある手順に従って証明書をインストールしました。一般に、証明書は有効で私のWebサーバー(nginx v1.4.6-Ubuntu 14.04.1 LTS)で機能していますが、OCSP OCSPをアクティブにしようとすると、nginx error.logに次のエラーが表示されます。

OCSP_basic_verify()が失敗しました(SSL:エラー:27069065:OCSPルーチン:OCSP_basic_verify:certificate verify error:Verify error:unable to get local issuer certificate)証明書ステータス、レスポンダー:gv.symcd.comの要求中

コマンドラインから次のコマンドでも試してみました:

openssl s_client -connect mydomain.tld:443 2>&1 </ dev / null

そして、私のerror.logのような「同じ」エラーを取得しました:

[...] SSLセッション:プロトコル:TLSv1.2暗号:ECDHE-RSA-AES256-GCM-SHA384 [...]開始時間:1411583991タイムアウト:300(秒)戻りコードを確認:20(ローカルに取得できません)発行者証明書)

ただし、GeoTrust Root Certificatをダウンロードして、次のコマンドで試してみてください。

openssl s_client -connect mydomain.tld:443 -CAfile GeoTrust_Global_CA.pem 2>&1 </ dev / null

検証は問題ありません:

[...] SSLセッション:プロトコル:TLSv1.2暗号:ECDHE-RSA-AES256-GCM-SHA384 [...]開始時間:1411583262タイムアウト:300(秒)戻りコードの検証:0(OK)

そのため、どういうわけかGeoTrustルート証明書が見つかりません/配信されません。

私のnginxサイトの構成:

server {
    listen 443;
    server_name mydomain.tld;

    ssl on;
    ssl_certificate /etc/ssl/certs/ssl.crt;
    ssl_certificate_key /etc/ssl/private/ssl.key;


    # Resumption
    ssl_session_cache shared:SSL:20m;

    # Timeout
    ssl_session_timeout 10m;

    # Security options
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

    # OCSP Stapling
    # It means that you sent status info about your certificate along with the request,
    # instead of making the browser check the certificate with the Certificate Authority.
    # This removes a large portion of the SSL overhead, the CloudFlare post above explains it in more detail.
    ssl_stapling on;
    ssl_stapling_verify on;
    #ssl_trusted_certificate /etc/ssl/certs/ssl.pem;

    #resolver 8.8.8.8 8.8.4.4 valid=300s;
    #resolver_timeout 10s;

    # This forces every request after this one to be over HTTPS
    add_header Strict-Transport-Security "max-age=31536000";[...]};

RapidSSLは、次の証明書を次の順序でssl.crtに追加する必要があると彼のドキュメントに書いています。

  1. myserver.crt
  2. 中間CAバンドル(RapidSSL SHA256 CA-G3)
  3. 中間CAバンドル(GeoTrust Global CA)

だから...

今、私が何を間違えているのかわかりません。

ありがとうございました!

回答:


17

エラーメッセージは同じですが、これら2つのエラーは無関係です。

[...] SSLセッション:プロトコル:TLSv1.2暗号:ECDHE-RSA-AES256-GCM-SHA384 [...]開始時間:1411583991タイムアウト:300(秒)戻りコードを確認:20(ローカルに取得できません)発行者証明書)

上記のエラーはopenssl_clientコマンドが発行されました。Florian Heiglが説明したように、openssl_clientにはのGlobalsign Root証明書が必要なため、このエラーが発生し/etc/ssl/certsます。


OCSP_basic_verify()が失敗しました(SSL:エラー:27069065:OCSPルーチン:OCSP_basic_verify:certificate verify error:Verify error:unable to get local issuer certificate)証明書ステータス、レスポンダー:gv.symcd.comの要求中

このエラーについては、特にnginx.conf に行を追加するときに、nginx ocsp routineによって発行さssl_stapling_verify on;れました。

いくつか抜粋をここにドキュメントssl_stapling_verifyそれはエラーをスロー理由を説明します

構文:ssl_stapling_verify on | オフ;

サーバーによるOCSP応答の検証を有効または無効にします。

検証を機能させるに、ssl_trusted_certificateディレクティブを使用して、サーバー証明書発行者の証明書、ルート証明書、およびすべての中間証明書を信頼できるように構成する必要があります。

つまり、(2)中間CAバンドル(RapidSSL SHA256 CA-G3)および(3)中間CAバンドル(GeoTrust Global CA)ssl_trusted_certificateディレクティブに提供する必要があります。

cat GeoTrustGlobalCA.crt rapidsslG3.crt > ocsp-chain.crt

ディレクティブに追加ocsp-chain.crtssl_trusted_certificateます。


どうもありがとうございます!私もこれを試しましたが、常にcliコマンドでテストしました。
カパレ14

中間証明書はどこで入手できますか?
インゴ

1

これの一部しか答えられません。

openssl s_client -connect mydomain.tld:443 2>&1 </ dev / null

/ etc / ssl / certsにGlobalsignルート証明書が必要です。CA証明書パッケージがありますが、インストールされていますか?


RapidSSLとGeoTrustを扱うときにGlobalsignルート証明書を使用する理由がわかりませんか?彼らはGlobalsignとは異なります...私が間違っていたら私を修正してください!
デジタルサイト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.