Cómo deshabilitar TLSv1.0 y TLSv1.1 en Nginx

Cómo deshabilitar TLSv1.0 y TLSv1.1 en Nginx

Estoy tratando de descubrir cómo deshabilitar TLSv1 y 1.1 Nginx y SÓLO permitir conexiones en 1.2. Esto se debe a razones de prueba más que al uso en producción y, por mi vida, no puedo entender por qué Nginx no me deja hacer esto.

Configuración SSL de 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;

Pero por alguna razón Nginx todavía negocia conexiones 1.0 y 1.1. ¿Estoy haciendo algo mal? Estoy usando Nginx 1.7.10 en Ubuntu Server 14.04LTS con OpenSSL 1.0.1f.

Respuesta1

Desde eldocumentación nginxpara ssl_protocolsdirectiva:

Los parámetros TLSv1.1 y TLSv1.2 son compatibles a partir de las versiones 1.1.13 y 1.0.12, por lo que cuando se utiliza la versión 1.0.1 o superior de OpenSSL en versiones anteriores de nginx, estos protocolos funcionan, pero no se pueden desactivar.

En versiones más recientes, esto se puede verificar usando los opensslsiguientes comandos:

  • Verifique que TLS v1.2 sea compatible:openssl s_client -tls1_2 -connect example.org:443 < /dev/null
  • Verifique que TLS v1.1 esténosoportado:openssl s_client -tls1_1 -connect example.org:443 < /dev/null
  • Verifique que TLS v1.0 esténosoportado:openssl s_client -tls1 -connect example.org:443 < /dev/null

Si la configuración de nginx incluye solo ssl_protocols TLSv1.2la directiva, entonces solo se admite TLSv1.2. Si ssl_protocols TLSv1.1 and TLSv1.2está configurado, solo se admiten TLSv1.1 y TLSv1.2. Probado con openssl 1.0.1ey nginx 1.6.2.

información relacionada