Cómo solucionar "certificate expired" y errores comunes de SSL/TLS: Guía Completa
SSL (Secure Sockets Layer) y su sucesor, TLS (Transport Layer Security), son los protocolos que mantienen internet seguro. Aseguran que los datos enviados entre su navegador y un sitio web estén cifrados y sean privados. Sin embargo, cuando algo sale mal con un certificado, los navegadores muestran páginas de advertencia que pueden ahuyentar al 99% de sus visitantes.
En esta guía, explicaremos los errores de SSL/TLS más comunes, por qué ocurren y cómo solucionarlos tanto para usuarios como para propietarios de sitios web.
1. Mensajes de Error Comunes de SSL/TLS
Dependiendo de su navegador (Chrome, Firefox, Safari) o su entorno de desarrollo (Node.js, Python), verá diferentes códigos de error:
- Chrome:
ERR_CERT_DATE_INVALID,ERR_CERT_AUTHORITY_INVALID,ERR_CERT_COMMON_NAME_INVALID,ERR_SSL_PROTOCOL_ERROR - Node.js:
CERT_HAS_EXPIRED,UNABLE_TO_VERIFY_LEAF_SIGNATURE,SELF_SIGNED_CERT_IN_CHAIN - Python (Requests):
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed - Firefox:
SEC_ERROR_EXPIRED_CERTIFICATE,MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT
2. Principales Causas y Soluciones
2.1 "certificate expired" (ERR_CERT_DATE_INVALID)
Los certificados SSL se emiten para un período específico (generalmente de 90 días a 1 año). Una vez que pasa esa fecha, el certificado ya no es válido.
La Causa: El propietario del sitio web olvidó renovar el certificado, o el proceso de renovación automática (como Let's Encrypt) falló.
La Solución:
- Para Propietarios: Renueve su certificado inmediatamente. Si usa Let's Encrypt, verifique los registros de
certboto su configuración del cliente ACME. - Para Usuarios: Verifique la fecha y hora del sistema de su computadora. Si el reloj está mal, el navegador pensará que un certificado válido ha caducado.
2.2 "self-signed certificate" (ERR_CERT_AUTHORITY_INVALID)
Por defecto, los navegadores solo confían en certificados emitidos por una "Autoridad de Certificación" (CA) conocida como DigiCert o Let's Encrypt. Un certificado autofirmado (self-signed certificate) es uno que usted mismo creó.
La Causa:
- Usar un certificado autofirmado en un sitio web de producción.
- Una CA privada o corporativa que no se ha agregado al almacén de "Raíz de confianza" de su computadora.
La Solución:
- Para Producción: Obtenga un certificado gratuito de Let's Encrypt o uno de pago de una CA comercial.
- Para Desarrollo: Está bien usar certificados autofirmados localmente, pero deberá indicar a sus herramientas que confíen en ellos o saltarse la verificación (aunque esto último es inseguro).
2.3 "certificate chain incomplete" (UNABLE_TO_VERIFY_LEAF_SIGNATURE)
Un certificado SSL no es solo un archivo; es una cadena de confianza que llega hasta una CA raíz. Si falta un certificado "intermedio" (una CA intermedia) en la configuración de su servidor, el navegador no puede verificar la cadena.
La Causa: El servidor solo está entregando el certificado "Leaf" (del sitio) y no la cadena completa o "Fullchain" (Sitio + Intermedio).
La Solución:
Asegúrese de que su servidor web (Nginx, Apache) esté configurado para usar el archivo fullchain.pem (o equivalente) proporcionado por su CA.
2.4 "SSL handshake failed"
Este es un error genérico que ocurre durante el "saludo" (handshake) inicial entre el cliente y el servidor.
La Causa:
- Protocolos no coincidentes (por ejemplo, el cliente solo soporta TLS 1.0, pero el servidor requiere TLS 1.3).
- Conjuntos de cifrado no coincidentes.
- Cortafuegos o proxy en el lado del servidor bloqueando la conexión.
La Solución: Verifique la configuración TLS de su servidor. Recomendamos usar el Generador de configuración SSL de Mozilla para obtener ajustes seguros y compatibles.
3. Resolución de Problemas Avanzada
3.1 Problemas de SNI (Server Name Indication)
En servidores modernos que alojan múltiples sitios en una sola IP, el servidor necesita saber qué certificado mostrar. Si el cliente no soporta SNI (raro hoy en día), el servidor podría mostrar el certificado incorrecto, provocando un error COMMON_NAME_INVALID.
3.2 HSTS (HTTP Strict Transport Security)
Si un sitio usa HSTS, el navegador se negará a dejar que el usuario "proceda de todos modos" ante un error de SSL. Es una función de seguridad para evitar ataques de "Man-in-the-Middle". Solución: Debe corregir el error de SSL; no hay forma de saltarse HSTS.
4. Prevención y Mejores Prácticas
- Auto-renovación: Use siempre un servicio con renovación automática (como Let's Encrypt con Certbot o el SSL gestionado de Cloudflare).
- Monitoreo: Use un servicio para monitorear la expiración y salud de sus certificados SSL.
- Use la Cadena Completa: Proporcione siempre la cadena de certificados completa en su configuración.
- Desactive Protocolos Débiles: Desactive SSLv2, SSLv3, TLS 1.0 y TLS 1.1. Solo permita TLS 1.2 y 1.3.
5. FAQ: Preguntas Frecuentes
P: ¿Es seguro hacer clic en "Continuar de todos modos" ante una advertencia de SSL?
R: Solo si es un desarrollador probando su propio sitio local. Nunca lo haga en un sitio público, especialmente bancos o redes sociales, ya que lo hace vulnerable al robo de datos.
P: ¿Por qué mi sitio funciona en escritorio pero muestra error de SSL en el móvil?
R: Esto suele ser un problema de certificate chain incomplete (cadena incompleta). Los navegadores de escritorio suelen "rellenar los huecos" de los certificados intermedios faltantes, mientras que los móviles son mucho más estrictos.
P: ¿Cloudflare soluciona los errores de SSL?
R: Cloudflare puede ocultar errores de SSL entre el usuario y Cloudflare, pero aún necesita un certificado válido (o al menos uno de Cloudflare Origin) entre Cloudflare y su servidor para ser totalmente seguro.
6. Herramienta de Verificación Rápida
¿Necesita inspeccionar un certificado o verificar una cadena? Use nuestro Verificador y Decodificador de Certificados SSL. Le permite:
- Decodificar archivos PEM y CRT para ver fechas de expiración e información del emisor.
- Verificar cadenas de certificados e identificar intermedios faltantes.
- Convertir entre formatos como PEM, DER y PFX.
Errores Relacionados
- Solucionar errores de 'Unexpected token in JSON'
- Cómo corregir errores de 'invalid base64 string'
- Solucionar 'JWT expired' y errores comunes de JWT