HSTS (HTTP Strict Transport Security) es una cabecera que le dice al navegador que nunca debe conectarse a tu dominio usando HTTP, solo HTTPS. Una vez que el navegador la recibe, guarda esa instrucción durante el tiempo que indiques y rechaza automáticamente cualquier intento de conexión no cifrada, aunque el usuario escriba http:// en la barra de direcciones.
En este artículo verás exactamente qué problema resuelve HSTS, por qué es superior a una redirección 301 ordinaria, y cómo activarlo en los servidores web más comunes.
¿Qué problema resuelve HSTS?
Cuando configuras una redirección de HTTP a HTTPS, el navegador primero hace una petición HTTP al servidor y luego lo redirige a HTTPS. Ese primer paso — la petición HTTP sin cifrar — es el punto débil. Un atacante en la misma red (por ejemplo, en una cafetería o aeropuerto) puede interceptar esa petición y mantener al usuario en una conexión HTTP, lo que se conoce como SSL stripping.
HSTS elimina ese primer paso vulnerable. Después de la primera visita segura, el navegador nunca vuelve a intentar HTTP para ese dominio durante el periodo de validez (max-age). La redirección ocurre localmente, antes de que salga cualquier petición por la red.
Anatomía de la cabecera HSTS
La cabecera tiene esta forma:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Cada parámetro tiene un significado concreto:
- max-age: tiempo en segundos que el navegador debe recordar la directiva. Un año (
31536000) es el valor recomendado para producción. - includeSubDomains: extiende la protección a todos los subdominios del dominio principal. Si tienes
blog.tudominio.comotienda.tudominio.com, también quedan protegidos. - preload: indica que el sitio quiere incluirse en la lista de precarga (HSTS Preload List) de los navegadores, de modo que la protección funcione incluso en la primera visita, antes de recibir la cabecera nunca.
HSTS Preload: protección desde la primera visita
La cabecera HSTS solo protege al usuario después de la primera visita exitosa por HTTPS. La HSTS Preload List resuelve ese límite: los navegadores Chrome, Firefox, Safari y Edge incluyen una lista de dominios codificada directamente en su código fuente. Si tu dominio está en esa lista, el navegador siempre usará HTTPS aunque el usuario nunca haya visitado el sitio antes.
Para solicitar la inclusión en la lista, visita hstspreload.org. Los requisitos son:
- Tener un certificado SSL válido.
- Redirigir HTTP a HTTPS en el dominio raíz.
- Servir la cabecera HSTS con
max-agede al menos 1 año, conincludeSubDomainsy conpreload. - Todos los subdominios deben también funcionar por HTTPS.
Advertencia: la inclusión en la preload list es difícil de revertir. Si en algún momento necesitas ofrecer HTTP (poco probable, pero posible), tendrás que solicitar la eliminación manualmente y esperar meses a que los navegadores actualicen la lista. Solo solicita la inclusión si estás seguro de que tu sitio siempre funcionará por HTTPS.
Cómo activar HSTS en Apache
Necesitas el módulo mod_headers activo. Añade la línea dentro del bloque <VirtualHost *:443> o en tu archivo .htaccess:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>
Importante: añade esta cabecera solo en el bloque del puerto 443 (HTTPS), no en el de HTTP. Si la añades en el bloque HTTP, el navegador podría guardar la directiva antes de estar seguro de que la conexión era cifrada.
Asegúrate también de tener la redirección permanente del tráfico HTTP hacia HTTPS, normalmente en el bloque <VirtualHost *:80>:
<VirtualHost *:80>
ServerName tudominio.com
ServerAlias www.tudominio.com
Redirect permanent / https://tudominio.com/
</VirtualHost>
Recarga Apache después de los cambios. Puedes verificar que la cabecera está presente con curl -I https://tudominio.com y buscando la línea Strict-Transport-Security en la respuesta.
Cómo activar HSTS en Nginx
Añade la directiva dentro del bloque server del puerto 443:
server {
listen 443 ssl;
server_name tudominio.com www.tudominio.com;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# resto de la configuración SSL...
}
El bloque del puerto 80 debe redirigir a HTTPS:
server {
listen 80;
server_name tudominio.com www.tudominio.com;
return 301 https://tudominio.com$request_uri;
}
Recarga Nginx con nginx -s reload y confirma la cabecera con curl -I.
HSTS en cPanel (sin acceso SSH)
Si tu hosting usa cPanel y no tienes acceso al servidor, puedes activar HSTS directamente desde el panel:
- Entra a cPanel y busca la sección Seguridad.
- Haz clic en TLS Status o HTTPS/SSL según la versión de tu panel.
- Algunos paneles incluyen un toggle para activar HSTS en la interfaz de Let's Encrypt o SSL/TLS.
- Alternativamente, edita tu
.htaccessdesde el Administrador de Archivos y añade el bloque de Apache indicado arriba.
Si tu plan de hosting no permite modificar cabeceras HTTP desde .htaccess (algunos proveedores lo restringen), contacta al soporte técnico para que habiliten mod_headers. También puedes revisar más detalles sobre seguridad y certificados en nuestra sección de seguridad SSL.
Tabla: parámetros de HSTS y cuándo usarlos
| Parámetro | Efecto | Recomendado para |
|---|---|---|
max-age=300 |
5 minutos (pruebas) | Primeros días de configuración |
max-age=2592000 |
30 días | Periodo de rodaje |
max-age=31536000 |
1 año | Producción estable |
includeSubDomains |
Protege subdominios | Cuando todos los subdominios tienen SSL |
preload |
Lista precargada en navegadores | Sitios sin intención de volver a HTTP |
Conclusiones clave
- HSTS es una cabecera que instruyente al navegador para usar siempre HTTPS, eliminando el riesgo de ataques SSL stripping.
- Es complementaria a la redirección 301: la redirección maneja la primera visita; HSTS protege todas las siguientes.
- Empieza con
max-agebajo (5 minutos) para detectar problemas antes de aumentarlo a un año. - Solo añade
preloadsi estás seguro de que el sitio siempre funcionará por HTTPS, ya que revertirlo lleva meses. includeSubDomainssolo debe usarse si todos tus subdominios tienen certificado SSL válido.
Si necesitas ayuda para configurar HSTS, cabeceras de seguridad y un entorno HTTPS robusto para tu sitio, el equipo de elenlace.com puede encargarse de toda la implementación y el mantenimiento técnico.
Preguntas frecuentes
¿HSTS funciona si mi sitio todavía tiene páginas en HTTP?
No. Si activas HSTS con includeSubDomains y algún subdominio no tiene certificado SSL, los usuarios no podrán acceder a él. Antes de activar HSTS, verifica que absolutamente todas las URLs y subdominios del sitio funcionan correctamente por HTTPS.
¿Puedo revertir HSTS si cometo un error?
Sí, pero con limitaciones. Puedes eliminar la cabecera del servidor en cualquier momento, pero los navegadores que ya la guardaron seguirán forzando HTTPS hasta que expire el max-age. Si solicitaste inclusión en la preload list, el proceso de eliminación puede tardar meses. Por eso se recomienda empezar con max-age bajo.
¿HSTS reemplaza el certificado SSL?
No. HSTS requiere un certificado SSL válido para funcionar. No es un sustituto: es una capa adicional de seguridad que complementa al certificado. Sin certificado válido, la cabecera HSTS no tiene efecto porque el navegador no puede establecer la conexión HTTPS.
¿Cómo sé si HSTS está funcionando correctamente en mi sitio?
Usa curl -I https://tudominio.com en la terminal y busca la línea Strict-Transport-Security en la respuesta. También puedes abrir las herramientas de desarrollador del navegador (pestaña Red/Network), cargar el sitio y revisar las cabeceras de respuesta de la petición principal.
¿Prefieres que lo hagamos por ti? En El Enlace resolvemos hosting y desarrollo web profesional.
Compara proveedores
Otros proveedores y guías que vale la pena comparar: