miércoles, 11 de agosto de 2021

Cómo configurar HSTS en Nginx



Cómo obligar a un navegador a usar HTTPS al acceder a nuestro dominio.



HSTS (HTTP Strict Transport Security o "Seguridad Estricta para el Transporte HTTP") es una política de seguridad en la que un servidor (como Nginx) especifica a los clientes (navegadores web) el requerimiento de usar HTTPS en todo momento para conectarse a ellos.

Para que HSTS funcione, el servidor manda la cabecera "Strict-Transport-Security", tras lo cual el cliente se verá obligado a usar HTTPS durante el tiempo especificado en el campo "max-age" de la cabecera.

Como HSTS se establece desde los headers, debemos añadir un header con dicha información.

Para añadir un header con la config. de HSTS, debemos escribir:

add_header Strict-Transport-Security "max-age=31536000";

IMPORTANTE: este header debe añadirse dentro de la directiva server, es decir, debe añadirse individualmente para cada dominio/subdominio que apunte a nginx, no puede añadirse una sola vez para todos los dominios dentro de la directiva http (por desgracia).

Como vemos en el código de ejemplo, la variable ‘max-age’ especifica que los clientes deben usar HTTPS durante 1 año (31536000 segundos), aunque esta cantidad puede modificarse.

Por otro lado, podemos incluir nuestra página en una lista de dominios que precargan HSTS por defecto en Google Chrome si añadimos nuestro dominio en https://hstspreload.org.

Para que Google Chrome precargue nuestra web en HTTPS por defecto, el header debe contener las palabras clave includeSubDomains y preload:

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

includeSubdomains hace que todos los subdominios de un dominio también usen HTTPS.

preload indica al cliente (navegador) que incluya nuestro dominio en la lista mencionada.

Elijamos el tipo de configuración que elijamos, debemos recargar la config. de nginx mediante:

nginx -s reload

Una vez recargado, HSTS quedará activo.
0

0 comentarios:

Publicar un comentario