¿Qué es HSTS y cómo se activa? (HTTP Strict Transport Security)

HSTS (HTTP Strict Transport Security) es una cabecera de seguridad que le dice al navegador "conéctate a mí solo por HTTPS". Usada junto con una redirección 301, evita que incluso la primera petición http:// a tu sitio sea interceptada (SSL stripping).

¿Por qué se necesita HSTS?

Si usas solo una redirección 301, el navegador del visitante llega primero al sitio por http:// y luego es redirigido a HTTPS. Esa breve primera petición es una ventana abierta para un atacante en la red. Con HSTS activado, el navegador convierte la petición directamente a HTTPS sin enviarla siquiera, aunque se escriba http en la barra de direcciones.

Anatomía de la cabecera

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  • max-age — cuántos segundos recuerda el navegador esta regla (31536000 = 1 año).
  • includeSubDomains — aplica la regla también a todos los subdominios.
  • preload — una solicitud para añadir tu sitio a la lista "solo HTTPS" integrada en los navegadores (ver la advertencia abajo).

Activación en Nginx

Añádela a tu bloque server de HTTPS:

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

Activación en Apache

Con mod_headers activado, en el host virtual o en .htaccess:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Aspectos a tener en cuenta

  • Asegúrate primero de que HTTPS funciona por completo. Con HSTS activo, el acceso por HTTP se bloquea totalmente del lado del navegador; si tu certificado está roto, los visitantes no podrán entrar.
  • Empieza con un max-age bajo. En la primera prueba usa max-age=300 (5 minutos) y, cuando todo funcione, súbelo a 1 año.
  • No te apresures con preload. Entrar en la lista de preload es permanente y salir lleva semanas; no lo añadas hasta estar seguro de que todos tus subdominios seguirán en HTTPS de forma permanente.

Resumen

HSTS hace obligatorio tu HTTPS con una cabecera de una línea y cierra la brecha de la primera petición. Asegúrate primero de que tu certificado funciona sin fallos; si no tienes uno, créalo con nuestro asistente SSL gratuito y luego activa HSTS con un max-age bajo.