Buenas prácticas de seguridad SSL/TLS
Protocolos, claves, cabeceras HSTS, redirecciones y vigilancia de los certificados: la lista de comprobación para una configuración HTTPS sólida.
Lectura: 4 min Actualizado el 26 octubre 2026
Tener un certificado válido no basta: la forma en que el servidor lo utiliza importa igual. Estos son los ajustes que marcan la diferencia, ordenados del más importante al más «fino».
1. Desactivar los protocolos antiguos
Solo TLS 1.2 y TLS 1.3 deben permanecer activos. SSL 3.0, TLS 1.0 y TLS 1.1 están obsoletos: los navegadores ya no los utilizan y dejarlos abiertos solo aporta riesgos.
Nginx:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
Apache:
SSLProtocol -all +TLSv1.2 +TLSv1.3
Para los conjuntos de cifrado, no hace falta elaborar su propia lista: el generador de configuración de Mozilla produce una configuración «Intermediate» adaptada a Nginx, Apache, HAProxy y muchos otros.
2. Servir la cadena completa
Su servidor debe enviar el certificado y sus intermedios: el archivo fullchain.pem con Let's Encrypt, o la concatenación «certificado y después intermedios» en el caso de un certificado comercial. Una cadena incompleta a veces funciona en Chrome de escritorio, pero rompe las aplicaciones móviles, curl y muchas integraciones de API.
3. Proteger la clave privada
- Permisos restringidos:
chmod 600, legible solo por root o por el servicio web. - Nunca en un repositorio Git, una incidencia, un correo electrónico o una imagen Docker pública.
- Una clave RSA de 2048 bits como mínimo, o ECDSA P-256, más ligera e igual de segura.
- Si sospecha de una filtración: revoque el certificado y genere una clave nueva. Una simple renovación con la misma clave no es suficiente.
4. Forzar HTTPS y activar HSTS
Redirija todo el tráfico HTTP a HTTPS con una redirección 301. Después, añada la cabecera HSTS: pide al navegador que no vuelva a intentar nunca una conexión sin cifrar en su dominio.
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Atención: con HSTS activo, un certificado caducado se vuelve bloqueante. El visitante ya no puede saltarse la advertencia, aunque quiera. Empiece con un max-age corto (una semana), compruebe que todos sus subdominios funcionan en HTTPS y después aumente el valor. Añada includeSubDomains solo si todos sus subdominios tienen un certificado válido.
5. Evitar el contenido mixto
Una página HTTPS que carga imágenes, scripts o fuentes por http:// pierde su candado, y los navegadores bloquean los scripts afectados. Busque las URL escritas a mano en sus plantillas y en su base de datos (un caso clásico en WordPress tras pasar a HTTPS). La siguiente cabecera puede servir como red de seguridad:
Content-Security-Policy: upgrade-insecure-requests
6. Limitar los certificados wildcard
Un certificado *.ejemplo.es es práctico, pero su clave privada da acceso a todos los subdominios. Si se copia en diez servidores, comprometer uno solo expone a los demás. Siempre que sea posible, opte por un certificado por servicio: con la automatización, es gratis y no requiere esfuerzo.
7. Restringir las autoridades autorizadas (CAA)
Un registro DNS CAA indica qué autoridades tienen derecho a emitir certificados para su dominio. Las demás rechazarán la solicitud.
ejemplo.es. CAA 0 issue "letsencrypt.org"
ejemplo.es. CAA 0 iodef "mailto:seguridad@ejemplo.es"
8. Vigilar las fechas de caducidad
Es la causa número 1 de los incidentes HTTPS, muy por delante de las vulnerabilidades criptográficas. Con certificados de 200 días hoy y de 47 días en 2029, la renovación será cada vez más frecuente. Y también las ocasiones de que falle sin hacer ruido.
- Automatice la renovación siempre que sea posible.
- Vigile de todos modos desde el exterior: la automatización puede fallar sin avisar.
- Avise a varias personas: una alerta enviada a un único buzón suele acabar ignorada durante las vacaciones.
SSL Expiration Reminder comprueba sus certificados cada día y alerta a todo el equipo por correo electrónico, Slack, Telegram o webhook. Puede probarlo gratis con hasta 3 dominios.
Lista de comprobación
- Solo TLS 1.2 y 1.3
- Cadena completa servida (
fullchain) - Clave privada protegida, RSA 2048 o ECDSA
- Redirección HTTP → HTTPS y HSTS
- Ningún contenido mixto
- Registro CAA
- Vigilancia de las caducidades con alertas a varias personas
Para una auditoría rápida de su sitio, use el comprobador SSL.