暗号化しましょう-nginx-OCSPステープリング


11

nginxサーバーでOCSPステープルを有効にしたいのですが。私は使っています

  • nginxバージョン:nginx / 1.6.2
  • Debian
  • 証明書を暗号化しましょう

私はこのことについては未経験なので、ささいな問題かもしれません。

ここに私のnginxセキュリティ設定

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/ssl/private/dhparams_4096.pem;

ここに私のサイト/サーバーのセキュリティ設定:

    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";

    # All files have been generated by Let's encrypt
    ssl_certificate /etc/letsencrypt/live/myexample.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/myexample.org/privkey.pem;

    # Everything below this line was added to enable OCSP stapling
    # What is that (generated file) and is that required at all?
    ssl_trusted_certificate /etc/letsencrypt/live/myexample.org/chain.pem;

    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

これは、OCSPステープリングを有効にするのに十分であることを読みました。

しかし、私がそれを使ってテストすると

 openssl s_client -connect myexample.org:443 -tls1 -tlsextdebug -status

次の応答が返されます。

TLS server extension "renegotiation info" (id=65281), len=1
0001 - <SPACES/NULS>
TLS server extension "EC point formats" (id=11), len=4
0000 - 03 00 01 02                                       ....
TLS server extension "session ticket" (id=35), len=0
TLS server extension "heartbeat" (id=15), len=1
0000 - 01                                                .
OCSP response: no response sent
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X1
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/CN=myexample.org
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
[...]

特に

OCSP response: no response sent

何が悪いのですか?

証明書の階層:

  • DSTルートCA X3
    • Authority X1を暗号化しましょう
      • myexample.org

編集:

OCSP: URI: http://ocsp.int-x1.letsencrypt.org/
CA-Issuer: URI: http://cert.int-x1.letsencrypt.org/

チェーン内の証明書のAIA拡張にOCSP URLが設定されていますか?
garethTheRed 2016

1
@Braiam-正しいドキュメントにリンクしていますか?そこにはOCSPについての言及はありません。そのコメントを+1した人に-最初にそれを読みましたか?
garethTheRed 2016

@garethTheRed証明書からOCSP URLを追加するように投稿を編集しました。
ST-DDT

@BraiamリンクされたドキュメントとAFAICTを読みました。(セキュリティにも私の質問にも関係しないcronjobを除く)
ST-DDT

すごい!それはそこにあります。残念ながら、私はnginxをあまり扱っていないので、実際にそれを構成するのを助けることはできません。URLが実際にあったかどうかは、最初に思い浮かんだことでした。他の唯一の考えはあなたfullchain.pemchain.pemファイルです-それらは同じですか?ssl_trusted_certificateディレクティブもfullchain.pemファイルを使用する必要はありませんか?
garethTheRed 2016

回答:


10

標準のnginx設定に従って、ssl_trusted_certificateチェーンを指定する必要はありません。以下で十分です。

ssl_certificate /etc/letsencrypt/live/myexample.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myexample.org/privkey.pem;
ssl_stapling on;
ssl_stapling_verify on;

詳細については、こちらをご覧ください。


これは私のnginx confを単純化し、同様に機能します!
Shautieh 2016

このサイトssldecoder.orgでテストしてもエラーが発生しますか?
Alexander Schranz、2016年

複数のsslがある場合、すべてのブロックで有効にする必要がある問題を修正しました。そうしないと、nginxが警告なしに失敗します。
Alexander Schranz

9

そこで見つけたチュートリアルに基づいて解決策を見つけまし

cd /etc/ssl/private
wget -O - https://letsencrypt.org/certs/isrgrootx1.pem https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem https://letsencrypt.org/certs/letsencryptauthorityx1.pem https://www.identrust.com/certificates/trustid/root-download-x3.html | tee -a ca-certs.pem> /dev/null

これをサイト/サーバー構成に追加します

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;

設定を再読み込み

重要:ブラウザを開いて、ウェブページに1回アクセスします。

次に、このコマンドを使用してサーバーをローカルでテストできます。

openssl s_client -connect myexample.org:443 -tls1 -tlsextdebug -status

ほとんどの場合、このような有効な応答が得られます

OCSP response:
======================================
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
    Responder Id: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X1

あなたが得ても心配しないでください

Verify return code: 20 (unable to get local issuer certificate)

下部にも、Let's暗号化証明書はまだデフォルトの信頼できる証明書ストアにありません。(私はsslの経験があまりないので、私は間違っているかもしれません)

サーバーで次のコマンドを実行しても、エラーは表示されません。

openssl s_client -CApath /etc/ssl/private/ -connect myexample.org:443 -tls1 -tlsextdebug -status

その後、以下を使用してサーバーをテストできます。

https://www.digicert.com/help/

現在、OCSP応答はssllabsテストでは取得されないことに注意してください。これは、Let's encrypt証明書がデフォルトの信頼できる証明書ストアにまだないためだと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.