Я пытаюсь выяснить, как отключить TLSv1 и 1.1 Nginx и разрешить соединения ТОЛЬКО на 1.2. Это больше для тестирования, чем для использования в производстве, и я не могу понять, почему Nginx не позволяет мне это сделать.
Конфигурация SSL Nginx:
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. Я что-то делаю не так? Я использую Nginx 1.7.10 на Ubuntu Server 14.04LTS с OpenSSL 1.0.1f.
решение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
.