La seguridad de los datos transmitidos en la web es obligatoria para cualquier negocio serio. El uso básico de certificados HTTPS (como Let's Encrypt) ya es común; sin embargo, la configuración predeterminada del servidor web Nginx a menudo acepta cifrados y protocolos de cifrado antiguos e inseguros por motivos de compatibilidad.
En este tutorial de ingeniería de redes, mostramos cómo realizar el *hardening* del protocolo SSL/TLS en Nginx para blindar sus conexiones y obtener la calificación máxima (A+) en la prueba de seguridad global de Qualys SSL Labs.
1. Desactivando Protocolos Obsoletos (TLS 1.0 y 1.1)
Los protocolos antiguos como SSLv3, TLS 1.0 y TLS 1.1 poseen fallos conocidos (como POODLE y BEAST). Debemos aceptar únicamente conexiones basadas en las versiones TLS 1.2 y TLS 1.3.
En el bloque `server` de configuración de Nginx:
```nginx ssl_protocols TLSv1.2 TLSv1.3; ```2. Definiendo Cifras de Cifrado Fuertes
Evite cifrados basados en algoritmos de cifrado vulnerables, como RC4 o 3DES. Las cifras modernas con intercambio de claves seguro mediante curvas elípticas (ECDHE) son más robustas y rápidas.
```nginx
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
```
3. Implementando HSTS (Strict Transport Security)
HSTS es una cabecera de respuesta HTTP que indica al navegador que fuerce cualquier conexión futura estrictamente a través de HTTPS, evitando ataques de interceptación ("Man-in-the-Middle") durante los redireccionamientos de HTTP a HTTPS.
Agregue la línea en Nginx:
```nginx add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; ```4. Optimización del Rendimiento (Session Resumption y OCSP)
Cifrar conexiones consume procesamiento de CPU. Optimice estos handshakes para que la navegación del usuario final siga siendo rápida:
```nginx
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
```
```nginx
ssl_stapling on;
ssl_stapling_verify on;
```
Conclusión
Configurar SSL/TLS de forma optimizada protege los datos sensibles de sus clientes (como tarjetas de crédito e información de inicio de sesión) y ayuda al posicionamiento orgánico de SEO del sitio web. Al implementar estas políticas en su servidor Nginx, garantiza el nivel más alto de integridad de datos del mercado.