Nginx で TLSv1.0 と TLSv1.1 を無効にする方法

Nginx で TLSv1.0 と TLSv1.1 を無効にする方法

TLSv1 と 1.1 Nginx を無効にして、1.2 での接続のみを許可する方法を見つけようとしています。これは、本番環境で使用するためというよりはテスト目的ですが、なぜ Nginx でこれができないのか、どうしてもわかりません。

Nginx SSL 設定:

ssl on;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM256:DH+AESGCM256:ECDH+AES256:!aNULL:!MD5:!kEDH;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=262974383; includeSubdomains;";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;

しかし、何らかの理由で、Nginx は依然として 1.0 と 1.1 の接続をネゴシエートします。何か間違っているのでしょうか? 私は OpenSSL 1.0.1f を搭載した Ubuntu Server 14.04LTS で Nginx 1.7.10 を使用しています。

答え1

からnginx ドキュメントディレクティブの場合ssl_protocols:

TLSv1.1 および TLSv1.2 パラメータはバージョン 1.1.13 および 1.0.12 以降でサポートされているため、OpenSSL バージョン 1.0.1 以上を古いバージョンの nginx で使用すると、これらのプロトコルは機能しますが、無効にすることはできません。`

openssl新しいバージョンでは、次のコマンドを使用してこれを確認できます。

  • TLS v1.2 がサポートされていることを確認します。openssl s_client -tls1_2 -connect example.org:443 < /dev/null
  • TLS v1.1がないサポート:openssl s_client -tls1_1 -connect example.org:443 < /dev/null
  • TLS v1.0がないサポート:openssl s_client -tls1 -connect example.org:443 < /dev/null

nginx 設定にssl_protocols TLSv1.2ディレクティブのみが含まれている場合、TLSv1.2 のみがサポートされます。 がssl_protocols TLSv1.1 and TLSv1.2設定されている場合は、TLSv1.1 と TLSv1.2 のみがサポートされます。 および を使用してテストされていopenssl 1.0.1eますnginx 1.6.2

関連情報