Назад | Перейти на главную страницу

Как отключить TLSv1.0 и TLSv1.1 в Nginx

Я пытаюсь понять, как отключить 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. Я делаю что-то неправильно? Я использую Nginx 1.7.10 на Ubuntu Server 14.04LTS с OpenSSL 1.0.1f.

Из документация 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.