web-dev-qa-db-ja.com

NginxはOCSPステープリングを暗号化できます

SSLとletsencrypt証明書を使用してnginxを設定しました。ただし、OCSPステープリングを機能させることができません。

私がWebで見つけたものから、それは次の構成で動作するはずですが、残念ながら動作しません。私のnginx仮想ホストは次のようになります:

server {

    ...

    # SSL Certificates
    ssl_certificate         /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/domain.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;

    # Allow Nginx to send OCSP results during the connection process
    ssl_stapling on;
    ssl_stapling_verify on;

    resolver $DNS-IP-1 $DNS-IP-2 valid=300s;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 10s;

    ...
}

https://www.ssllabs.com でドメインをスキャンすると、次のように報告されます。

OCSP stapling   No

構成に何が欠けていますか?

6
lockdoc

セットアップに問題はありませんが、冗長なresolverディレクティブを削除すると別の結果が得られる可能性があります。

私も同様の状況に直面し、 この記事 に基づいてopensslを使用してOCSPステープリングをテストしました。

echo QUIT | openssl s_client -connect www.yourdomain.com:443 -servername www.yourdomain.com -status 2> /dev/null | grep -A 17 'OCSP response:' | grep -B 17 'Next Update'

出力がないということは、OCSPステープリングがまだ機能していないことを意味します。

私が観察したところによると、Nginxを再起動/リロードし、すぐにSSL Labsを使用してテストすると、失敗します。次に、上記のコマンドを使用して、機能するまで数回テストしてから、SSLラボで再テストします。試してみることをお勧めします。最初に失敗した場合は、数分待ってからもう一度お試しください。わたしにはできる。

2
rad

nginxは、それぞれの証明書を使用したリクエストが最初に行われたときafterにOCSP応答をフェッチしています。

この動作は おそらく変更される予定ですOCSP Must Stapleを完全にサポートするためです

それが発生するまで、ステープリングの信頼できるテストは、複数回接続し、その間に署名された応答をフェッチするためにnginxを許可することです。

for i in 3 0; do openssl s_client -connect example.com:443 -servername example.com -status </dev/null 2>&1 | grep -A 13 OCSP; sleep $i; done

OCSPレスポンダーは失敗します-たくさん。それらが遅い場合、nginxは(構成不能、afaik 60秒)タイムアウト後にあきらめ、エラーログにそのように記録します。すぐに知りたい場合は、次を試してください。

openssl x509 -noout -text -in example.crt | grep "OCSP - URI" | cut -d: -f2,3 | grep -io "^http://[-.a-z0-9]*$" | xargs curl -D-
1
anx