Seguridad y SSL

Cómo habilitar HSTS en tu sitio web para máxima seguridad HTTPS

HSTS obliga al navegador a usar siempre HTTPS y elimina la ventana de ataque de los redirects HTTP; aquí te mostramos cómo activarlo correctamente paso a paso.

A series of red padlocks attached to a stone wall, symbolizing security and love.

HSTS (HTTP Strict Transport Security) es una cabecera de respuesta que instruye al navegador a conectarse exclusivamente por HTTPS durante un período de tiempo definido, eliminando por completo la posibilidad de un ataque de degradación SSL. Una vez activado, el navegador ni siquiera envía la petición HTTP inicial: va directo a HTTPS.

¿Por qué HSTS importa si ya tienes un redirect 301?

Un redirect 301 de HTTP a HTTPS funciona, pero tiene una brecha: la primera petición del usuario siempre sale por HTTP antes de ser redirigida. En ese instante existe una ventana para un ataque SSL stripping en redes comprometidas (Wi-Fi público, proxies maliciosos).

HSTS cierra esa ventana porque el navegador recuerda que tu dominio solo acepta HTTPS y bloquea la petición HTTP en el cliente, antes de salir a la red. La primera visita sigue siendo necesaria para recibir la cabecera, pero a partir de ahí el navegador aplica la política de forma local.

Consulta más fundamentos en nuestra sección de seguridad SSL para entender cómo HSTS encaja en una estrategia de seguridad completa.

Requisitos previos

  • Tu sitio debe servir contenido por HTTPS con un certificado válido antes de activar HSTS. Activarlo sin HTTPS funcional bloquea a los visitantes.
  • Todos los recursos de la página (imágenes, scripts, fuentes) deben cargarse también por HTTPS (sin contenido mixto).
  • Si tienes subdominios, asegúrate de que también tengan HTTPS activo antes de usar la directiva includeSubDomains.

Cómo activar HSTS en Apache (.htaccess)

La forma más común en hosting compartido con cPanel es añadir la cabecera en el archivo .htaccess del directorio raíz de tu sitio:

# Activa el módulo de cabeceras (ya habilitado en la mayoría de servidores)
<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>

Desglose de los parámetros:

Directiva Valor recomendado Qué hace
max-age 31536000 (1 año) Tiempo en segundos que el navegador recuerda la política
includeSubDomains Opcional pero recomendado Aplica la política a todos los subdominios
preload Solo si entiendes las implicaciones Incluye el dominio en la lista preload de navegadores

Estrategia de despliegue progresivo: comienza con un max-age corto (300 segundos = 5 minutos), verifica que todo funciona y luego eleva a 31536000.

Cómo activar HSTS en Nginx

En el bloque server de tu virtual host de Nginx (o en /etc/nginx/conf.d/), agrega:

server {
    listen 443 ssl;
    server_name tudominio.com www.tudominio.com;

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

    # resto de tu configuración...
}

La directiva always es importante: garantiza que la cabecera se envíe incluso en respuestas de error (4xx, 5xx), evitando que un atacante fuerce un error HTTP para eludir la política.

Cómo activar HSTS desde cPanel (sin editar archivos)

Algunos proveedores de cPanel exponen la opción directamente en la interfaz:

  1. Inicia sesión en cPanel.
  2. Ve a Seguridad → Administrador SSL/TLS o busca HSTS en el buscador de cPanel.
  3. Si tu proveedor tiene el módulo HSTS habilitado, verás un interruptor por dominio.
  4. Actívalo y elige la duración (max-age) desde el menú.

Si no aparece la opción, el método del .htaccess descrito arriba es el camino más directo.

La directiva preload: beneficio extra, compromiso permanente

Añadir preload a la cabecera y registrar tu dominio en hstspreload.org hace que los navegadores (Chrome, Firefox, Safari, Edge) vengan con tu dominio precargado en su lista interna de "solo HTTPS". Esto protege incluso la primera visita de un usuario nuevo.

Advertencia importante: la inclusión en la lista preload es difícil de revertir y puede tardar meses en propagarse. Antes de activar preload:

  • Confirma que todos tus subdominios tienen HTTPS válido.
  • Usa un max-age mínimo de 31536000.
  • Incluye includeSubDomains.
  • Ten un plan claro si alguna vez necesitas volver a HTTP (no es trivial).

Verificar que HSTS está activo

Hay tres formas rápidas de confirmar:

  • Herramientas de desarrollo del navegador: abre DevTools → pestaña Red/Network → haz clic en cualquier respuesta de tu sitio → busca Strict-Transport-Security en los encabezados de respuesta.
  • curl: curl -I https://tudominio.com y revisa la salida.
  • SSL Labs: la prueba en ssllabs.com/ssltest muestra la presencia de HSTS y su puntuación.

El equipo de elenlace.com puede auditar la configuración de seguridad HTTP de tu sitio y asegurarse de que HSTS, CSP y otras cabeceras estén correctamente implementadas.

Conclusiones clave

  • HSTS elimina la ventana de ataque de la primera petición HTTP que los redirects 301 no pueden cerrar.
  • Actívalo solo después de confirmar que HTTPS funciona en el dominio y todos sus subdominios.
  • Comienza con un max-age corto, verifica y luego sube a 31536000 (un año).
  • Usa includeSubDomains para proteger toda la familia de subdominios.
  • La directiva preload ofrece protección máxima pero es un compromiso a largo plazo: planifícala con cuidado.

¿Quieres implementar HSTS y revisar el resto de cabeceras de seguridad de tu sitio? El equipo de elenlace.com hace la auditoría y te entrega un plan de acción concreto.

Preguntas frecuentes

¿Qué pasa si activo HSTS pero mi certificado SSL vence?

Los navegadores bloquearán el acceso al sitio y mostrarán un error de seguridad que el usuario no puede omitir fácilmente, ya que HSTS impide las excepciones manuales. Por eso es crítico tener renovación automática del certificado antes de activar HSTS con un max-age largo.

¿HSTS afecta el posicionamiento SEO?

Indirectamente, de forma positiva. Google usa HTTPS como factor de ranking y un sitio con HSTS correctamente configurado refuerza la señal de confianza. Además, elimina el redirect HTTP→HTTPS para visitas recurrentes, lo que reduce levemente el tiempo de carga.

¿Puedo desactivar HSTS si me arrepiento?

Sí, pero con limitaciones. Puedes eliminar la cabecera del servidor, pero los navegadores que ya la recibieron seguirán aplicando la política hasta que caduque el max-age. Para desactivarlo antes, debes servir la cabecera con max-age=0 durante el tiempo restante, lo que le indica al navegador que olvide la política. Si estás en la lista preload, el proceso es mucho más lento.

¿HSTS protege contra todos los ataques SSL?

No. Protege específicamente contra ataques de degradación (SSL stripping) y conexiones HTTP no deseadas. No reemplaza un certificado válido, cifrado fuerte (TLS 1.2/1.3), ni otras cabeceras de seguridad como CSP o X-Frame-Options.

Para saber más

Otros proveedores y guías que vale la pena comparar:

← Todos