私は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を使用しています。
nginxのドキュメント for ssl_protocols
ディレクティブから:
TLSv1.1およびTLSv1.2パラメーターは、バージョン1.1.13および1.0.12以降でサポートされているため、古いnginxバージョンでOpenSSLバージョン1.0.1以降を使用すると、これらのプロトコルは機能しますが、無効にすることはできません。
新しいバージョンでは、次のようにopenssl
コマンドを使用してこれを確認できます。
openssl s_client -tls1_2 -connect example.org:443 < /dev/null
openssl s_client -tls1_1 -connect example.org:443 < /dev/null
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
でテスト済み。