HSTS explicado: max-age, preload y qué se rompe
Actualizado 2026-11-03 · 6 min de lectura
HSTS es la única cabecera de seguridad que puede dejar un sitio inaccesible, incluso para su dueño. Y también es obligatoria para un A+. La distancia entre ambos hechos depende por completo de la disciplina del despliegue.
Qué hace realmente la cabecera
Strict-Transport-Security le dice al navegador que este host solo debe contactarse por HTTPS durante los próximos N segundos. Una vez recibida, el navegador reescribe los enlaces http:// internos, bloquea el clic para saltarse errores de certificado y rechaza el HTTP en claro, todo antes de que ninguna petición salga del equipo.
Por eso defiende frente a ataques de degradación que una redirección no puede: una redirección aún envía la primera petición en claro, y esa es exactamente la petición que un atacante en la red quiere interceptar.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
max-age es una cuenta atrás que no puedes cancelar
El max-age se guarda en el cliente. Si sirves un año y luego quitas la cabecera, cada navegador que ya la vio sigue forzando HTTPS hasta un año. No hay interruptor en el servidor para apagarlo.
CertH considera 180 días (15552000 segundos) el umbral para A+. Un año es el valor habitual en producción. Por debajo de 180 días HSTS sigue contando como activo en el resumen, pero no desbloquea A+.
includeSubDomains y preload son decisiones separadas
includeSubDomains extiende la regla a todos los subdominios. Si algún subdominio solo habla HTTP —una herramienta interna, un panel de administración heredado, un host de staging— se vuelve inaccesible para quien haya visitado el dominio padre. Audita el DNS primero.
Preload va más allá: el dominio queda incrustado en una lista que se distribuye con los navegadores, así que la regla se aplica ya en la primera visita, antes de ver ninguna cabecera. Retirarlo tarda meses y requiere enviarlo a la lista de eliminación. No añadas preload hasta que la cabecera lleve al menos unos meses estable.
- •Servir la cabecera en toda respuesta HTTPS, incluidas las páginas de error: un 404 sin ella no le enseña nada al navegador.
- •Nunca envíes HSTS sobre HTTP en claro; los navegadores lo ignoran por especificación, así que un bucle de redirección mal configurado no se arregla por esta vía.
- •Revisa si hay servicios solo HTTP en subdominios antes de añadir includeSubDomains.
- •Añade preload al final, y solo cuando el max-age lleve un tiempo en un año.
Un despliegue que no rompe nada
Empieza con un max-age corto para que un error caduque rápido: max-age=300. Mantenlo una semana y vigila subdominios rotos e informes de contenido mixto. Luego pasa a un día, después a un mes y luego a un año. Cada paso es reversible dentro de la ventana anterior, que es justo la razón de empezar corto.
Si algo se rompe, la solución es servir HTTPS correctamente en el host afectado, no quitar la cabecera, que ya no ayuda a nadie que la haya recibido.
FAQ
¿La falta de HSTS baja mi puntuación?
No resta de la puntuación base, pero bloquea A+: la nota máxima exige HSTS con al menos 180 días de max-age o preload. Un sitio puede sacar 100 y seguir siendo A sin ella.
¿Puedo usar HSTS sin poseer todos los subdominios?
Sí, siempre que omitas includeSubDomains. Entonces la cabecera solo se aplica al host exacto que la sirvió.