technical

Activar HSTS

MetricSpot busca la cabecera Strict-Transport-Security. HSTS obliga al navegador a usar HTTPS en cada visita y cierra la ventana de ataque de downgrade que deja abierta HTTPS por sí solo.

Qué comprueba esta auditoría

Revisa las cabeceras HTTP de respuesta en busca de Strict-Transport-Security (HSTS). Esta directiva indica a todos los navegadores que rechacen conexiones HTTP planas a tu dominio durante el tiempo que indique max-age.

Por qué importa

Incluso con HTTPS activado, la primerísima petición que hace un visitante nuevo suele ir en texto plano: teclea tudominio.com y el navegador intenta primero HTTP. Esa primera petición es la ventana para ataques de downgrade (man-in-the-middle al estilo sslstrip en una Wi-Fi hostil).

HSTS cierra esa ventana de golpe. Una vez que un navegador ha visto una cabecera HSTS válida, reescribe automáticamente cada petición futura a HTTPS durante todo el max-age, ignorando las URLs http:// que escriba el usuario.

Cómo solucionarlo

Envía la cabecera en cada respuesta HTTPS. Un valor seguro para producción:

Strict-Transport-Security: max-age=31536000; includeSubDomains

nginx:

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

Apache:

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

Cloudflare: SSL/TLS → Edge Certificates → HTTP Strict Transport Security (HSTS) → activar, fijar max-age a 12 meses y marcar Include subdomains.

Cuando estés seguro, añade ; preload y envía tu dominio a la lista preload de Chrome: consulta la página de HSTS preload para conocer los requisitos.

Preguntas frecuentes

¿Qué max-age debería usar?

Empieza con max-age=300 (5 minutos) mientras pruebas y luego sube a 31536000 (un año). El preload de HSTS exige al menos un año.

¿HSTS me deja fuera si HTTPS se rompe?

Sí, esa es la idea. Si tu certificado caduca o tu configuración TLS se rompe, los usuarios que ya hayan visitado tu sitio no podrán acceder por HTTP como alternativa. Renueva los certificados de forma fiable (Let’s Encrypt + timer de systemd) y monitoriza la caducidad.

¿Y si no controlo los subdominios?

Quita includeSubDomains. La comprobación sigue pasando solo con max-age, aunque pierdes la protección sobre *.tudominio.com. No puedes hacer preload sin includeSubDomains.

Fuentes

Última actualización 2026-05-11