La expiración de SSL es predecible: cómo detectarla en sitios de clientes
Resumen
Cada certificado lleva su fecha de expiración, así que uno expirado es una falla de proceso, no una sorpresa. Aun así, la renovación automática se rompe: el sitio cambió de hosting, cambió el DNS, una tarea de renovación dejó de ejecutarse. Desde el 15 de marzo de 2026 los certificados públicos duran como máximo 200 días, y bajarán a 47 días en 2029; además, Let's Encrypt dejó de enviar correos de expiración en junio de 2025. Revisa un certificado con un solo comando openssl y, si tienes muchos sitios, deja que un monitor lea la fecha cada día y te avise 30, 14, 7 y 1 día antes. Baromio hace exactamente eso: lee la fecha de expiración y el emisor desde una sola ubicación, y no revisa la cadena ni los cifrados.
La mayoría de las caídas llegan sin aviso. Un certificado que expira es distinto: la fecha de expiración está escrita en el propio certificado, con meses de antelación. Cuando esa fecha pasa, los navegadores reemplazan el sitio por una advertencia de seguridad a pantalla completa.
Aun así, les pasa a equipos que deberían saberlo. El 3 de febrero de 2020, Microsoft Teams estuvo caído durante unas horas porque había expirado un certificado de autenticación, como confirmó Microsoft en ese momento.
Por qué los certificados siguen expirando en los sitios de clientes
Hoy la mayoría de los sitios de clientes usan certificados gratuitos que se renuevan automáticamente. Lo que falla es la renovación, y falla en silencio. Motivos habituales:
- El sitio se mudó. El DNS ahora apunta a un nuevo hosting o a una CDN, pero el servidor antiguo sigue intentando renovar, o el nuevo nunca se configuró para hacerlo.
- La tarea de renovación dejó de ejecutarse. Una actualización del servidor, un cambio de versión de PHP o un disco lleno, y el cron job o el cliente ACME ya no se ejecuta.
- La renovación funcionó, el servidor no se recargó. El nuevo certificado está en el disco, pero el servidor web sigue sirviendo el anterior.
- Alguien lo compró a mano. Un certificado de pago de la agencia anterior del cliente o de la propia cuenta del cliente, que renueva quien se acuerde.
- Nombres de host que nadie controla.
wwwy el dominio sinwww, un subdominio de la tienda, un sitio de staging: cada uno puede tener su propio certificado.
Dos cambios hacen que esto sea más probable, no menos:
- Let's Encrypt dejó de enviar recordatorios de expiración por correo el 4 de junio de 2025. Si la renovación falla, nadie te avisa, salvo que la monitorees.
- Los certificados son cada vez más cortos. Según la votación SC-081 del CA/Browser Forum, los certificados TLS públicos emitidos a partir del 15 de marzo de 2026 tienen una validez máxima de 200 días, a partir del 15 de marzo de 2027 de 100 días y a partir del 15 de marzo de 2029 de 47 días. Los certificados de Let's Encrypt ya duran 90 días por defecto, con renovación recomendada cada 60. Un certificado comprado hoy ya no puede durar un año, así que las renovaciones manuales llegan con al menos el doble de frecuencia.
Revisa un certificado a mano
Para un sitio, este comando muestra la fecha de expiración y el emisor:
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -enddate -issuer
-servername importa: un servidor que aloja varios sitios elige el certificado según el nombre. Ejecútalo también para www.example.com y para cada subdominio que use el cliente. En el navegador, haz clic en el icono a la izquierda de la dirección y abre los detalles del certificado.
Una regla útil para los certificados de Let's Encrypt con el ciclo predeterminado de 90 días: la renovación debería ocurrir cuando quedan unos 30 días. Si a un certificado solo le quedan 14 días, lo más probable es que la renovación ya haya fallado. No esperes al aviso de 7 días.
Avisos a los que de verdad vas a reaccionar
Un aviso con 30 días de antelación es fácil de ignorar, y uno que llega al mismo canal que todas las demás notificaciones se pierde. Dos hábitos ayudan:
- Trata cada etapa de forma distinta. El aviso de 30 días es una nota para revisar la configuración de la renovación; los avisos de 7 días y de 1 día significan que hay que arreglarlo hoy.
- Envía los últimos avisos a un lugar que leas todos los días, no a un canal compartido saturado.
Qué revisa Baromio
- Qué lee: una vez al día, y poco después de que lo actives, Baromio se conecta al host del monitor en el puerto 443 (o el puerto de la URL) y lee la fecha de expiración y el emisor del certificado. La página del monitor muestra el emisor y "Válido hasta" con los días restantes; la tarjeta del monitor muestra el mismo número como una insignia SSL.
- Cuándo te avisa: cuando quedan 30, 14, 7 y 1 día, y una vez cuando el certificado ya expiró. Cada etapa avisa una sola vez, por correo electrónico y en cualquier canal de Slack, Discord o webhook que hayas conectado (Telegram en Pro y Business). Un certificado renovado reinicia las etapas.
- Dónde activarlo: Monitorear Certificado SSL en un monitor HTTP o de palabra clave con una URL
https://, en Agregar Nuevo Monitor o Editar. Viene desactivado por defecto, también en los monitores creados por importación masiva, así que actívalo en cada sitio. Está disponible en todos los planes: 20 monitores en el plan Free, 30 en Pro (9 EUR al mes), 100 en Business (29 EUR al mes). - Qué no hace: no valida la cadena de certificados, no comprueba que el nombre coincida, no prueba versiones de protocolo ni cifrados y no revisa desde más de una ubicación. No renueva nada; la renovación sigue en tus manos o en las del hosting.
Una rutina breve para sitios de clientes
- Haz una lista de todos los nombres de host de cada cliente: dominio sin
www,www, subdominios, staging. - Pon un monitor con la comprobación SSL en cada uno que sirva HTTPS.
- Cuando llegue un aviso por un certificado que debería renovarse solo, averigua por qué falló la renovación; no te limites a renovarlo a mano y seguir adelante.
- Después de mover un sitio a un nuevo hosting o CDN, revisa el certificado ese mismo día con el comando openssl de arriba.
Fuentes
- Engadget, Microsoft Teams went down because of an expired certificate, 3 de febrero de 2020.
- Let's Encrypt, Ending Support for Expiration Notification Emails, 22 de enero de 2025: el servicio terminó el 4 de junio de 2025.
- Let's Encrypt, FAQ: los certificados predeterminados son válidos por 90 días, con renovación recomendada cada 60 días.
- CA/Browser Forum, Ballot SC081v3, aprobada el 11 de abril de 2025.
- DigiCert, TLS certificate lifetimes will officially reduce to 47 days, 16 de mayo de 2025: el calendario con fechas (200 / 100 / 47 días).