Cómo activar HSTS en tu sitio: cPanel, Cloudflare y WordPress paso a paso
Por Gilberto Arenas · · 6 min de lectura
En nuestro estudio con 390 sitios, 1 de cada 3 no tenía HSTS, y entre los sitios WordPress la cifra subía a más de 7 de cada 10. Es uno de los arreglos de seguridad con mejor relación esfuerzo-beneficio que existen: una línea de configuración que protege a todos tus visitantes. Aquí te explicamos cómo activarlo según dónde esté alojado tu sitio, y sobre todo cómo hacerlo sin romper nada.
Qué hace HSTS, en dos frases
HSTS (HTTP Strict Transport Security) le dice al navegador: "durante los próximos X segundos, abre este sitio siempre con HTTPS, aunque alguien escriba http://". Así se elimina esa primera conexión sin cifrar que un atacante en una red Wi-Fi pública podría interceptar para desviar a tu visitante.
Técnicamente es un encabezado que tu servidor envía con cada respuesta, y se ve así:
Strict-Transport-Security: max-age=31536000; includeSubDomains
- max-age es la duración en segundos. 31536000 es un año.
- includeSubDomains extiende la regla a todos los subdominios (tienda.tunegocio.com, blog.tunegocio.com, etc.).
Antes de activarlo: tres comprobaciones
HSTS es fácil de activar, pero difícil de deshacer: una vez que un navegador lo recibe, recuerda la regla durante todo el max-age. Si tu sitio deja de funcionar con HTTPS, esos visitantes no podrán entrar hasta que la regla expire. Por eso, antes de nada:
- Confirma que todo tu sitio funciona con HTTPS. Navega por las páginas principales con "https://" y revisa que no aparezcan advertencias de contenido mixto (imágenes o scripts cargados por http://).
- Confirma que tu certificado se renueva solo. La mayoría de los hostings usan Let's Encrypt con renovación automática. Si tu certificado es de pago y lo renuevas a mano, pon un recordatorio en tu calendario.
- Haz una lista de tus subdominios. Si algún subdominio no tiene HTTPS (por ejemplo, un sistema viejo de facturación en facturas.tunegocio.com), no uses
includeSubDomainstodavía.
Empieza con poco tiempo
La recomendación de seguridad estándar es activar HSTS por etapas:
- Empieza con max-age=300 (cinco minutos) y navega tu sitio un día.
- Si todo va bien, sube a max-age=86400 (un día) durante una semana.
- Luego a max-age=2592000 (un mes).
- Finalmente a max-age=31536000 (un año).
Si en alguna etapa algo falla, solo tienes que bajar el valor y esperar a que expire el anterior, que será corto.
Opción 1: hosting con cPanel o Apache (.htaccess)
Si tu hosting usa cPanel, casi seguro corre Apache y puedes agregar el encabezado en el archivo .htaccess:
- Entra a cPanel y abre el Administrador de archivos.
- Ve a la carpeta pública de tu sitio (normalmente
public_html). - Activa la opción de mostrar archivos ocultos, porque
.htaccessempieza con punto. - Haz una copia de seguridad del archivo: descárgalo antes de tocarlo.
- Edítalo y agrega al principio:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=300"
</IfModule>
- Guarda y abre tu sitio para confirmar que sigue cargando.
Si tu sitio deja de abrir con un "Error 500", restaura la copia del archivo: significa que hay un error de escritura o que tu servidor no tiene el módulo de encabezados activo. En ese caso, consulta con el soporte de tu hosting.
Opción 2: Cloudflare
Si tu dominio pasa por Cloudflare, no necesitas tocar el servidor:
- Entra al panel de Cloudflare y elige tu dominio.
- Ve a SSL/TLS y luego a Edge Certificates (certificados perimetrales).
- Busca la sección HTTP Strict Transport Security (HSTS) y pulsa Enable HSTS.
- Cloudflare te mostrará una advertencia parecida a la de esta guía. Léela y acepta.
- Elige el Max Age. Empieza por el valor más bajo que te ofrezca.
- Deja Include subdomains desactivado hasta haber hecho la comprobación de subdominios.
- Deja Preload desactivado (más abajo explicamos por qué).
Antes de activarlo, revisa que el modo SSL/TLS de Cloudflare esté en Full o Full (strict), no en Flexible. Con "Flexible", la conexión entre Cloudflare y tu servidor va sin cifrar, y HSTS daría una falsa sensación de seguridad.
Opción 3: WordPress con un plugin
Si no quieres tocar archivos, muchos plugins de seguridad y de SSL de WordPress incluyen una casilla para activar HSTS en su configuración de encabezados de seguridad. El procedimiento general es:
- Haz una copia de seguridad del sitio.
- Instala o abre tu plugin de seguridad.
- Busca la sección de encabezados de seguridad (security headers) o SSL avanzado.
- Activa HSTS con la duración más corta disponible.
Ten en cuenta que algunos plugins solo agregan el encabezado a las páginas que genera WordPress, no a las imágenes ni a otros archivos. No es grave: el navegador guarda la regla para todo el dominio con que la reciba una sola vez.
Opción 4: Nginx
Si administras tu propio servidor con Nginx, agrega dentro del bloque server que atiende el puerto 443:
add_header Strict-Transport-Security "max-age=300" always;
Luego valida la configuración con nginx -t y recarga el servicio. El always hace que el encabezado se envíe también en las respuestas de error.
Opción 5: Vercel, Netlify y similares
Vercel envía HSTS por defecto en los dominios que gestiona, así que probablemente ya lo tienes. En Netlify y otras plataformas se configura con un archivo de encabezados del proyecto (por ejemplo _headers o netlify.toml). Revisa primero si ya aparece antes de agregarlo: tenerlo dos veces no rompe nada, pero confunde.
Cómo comprobar que quedó bien
- Abre tu sitio en Chrome, clic derecho, Inspeccionar.
- Ve a la pestaña Red (Network) y recarga.
- Haz clic en la primera fila y busca en Encabezados de respuesta la línea
strict-transport-security.
También puedes pasar tu sitio por nuestra auditoría gratis: en la sección de seguridad verás si HSTS está activo.
¿Y el "preload"?
Existe una lista, mantenida por los navegadores, de sitios que tienen HSTS incluso antes de la primera visita. Para entrar se agrega preload al encabezado y se solicita la inclusión. Suena bien, pero salir de esa lista toma meses, y exige que todos tus subdominios tengan HTTPS para siempre. Para la mayoría de los negocios pequeños, el HSTS normal es más que suficiente. Considera el preload solo si tienes un equipo técnico que administre el dominio a largo plazo.
Errores frecuentes
- Activarlo con un certificado a punto de vencer. Si el certificado vence, tus visitantes recurrentes no podrán entrar ni siquiera aceptando el riesgo.
- Usar includeSubDomains sin revisar. El subdominio olvidado que no tiene HTTPS deja de funcionar.
- Saltar directo a un año. Si algo sale mal, ya no hay vuelta atrás rápida.
- Pensar que HSTS lo resuelve todo. Es una capa más: complementa, no reemplaza, mantener tu sitio actualizado y el resto de encabezados de seguridad.