web-dev-qa-db-ja.com

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を使用しています。

6
Lost

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

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

新しいバージョンでは、次のように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でテスト済み。

3
vtorhonen