Todas las guías de despliegue Despliegue

Cómo verificar el vencimiento de un certificado SSL

Un certificado SSL expirado provoca que los navegadores muestren una advertencia de seguridad a página completa, bloqueando el acceso de los visitantes a tu sitio. A continuación te explicamos cómo verificar cuándo expira tu certificado y cómo configurar el monitoreo.

Verificar desde tu navegador

  1. Visita tu sitio con https://
  2. Haz clic en el icono de candado en la barra de direcciones
  3. Haz clic en «Certificado» o «La conexión es segura» → «El certificado es válido»
  4. Busca la fecha de «Válido hasta» o «Expira el»

Verificar con OpenSSL (línea de comandos)

Verificación remota (desde cualquier máquina)

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -enddate

Resultado: notAfter=Aug 5 12:00:00 2026 GMT

Verificación de archivo local

openssl x509 -noout -enddate -in /etc/ssl/gethttps/fullchain.pem

Verificar todos los detalles a la vez

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -subject -issuer -dates

Verificar con un script de una línea

Comprueba si un certificado expira dentro de 30 días:

if openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -checkend 2592000 > /dev/null 2>&1; then
  echo "Certificate is valid for at least 30 more days"
else
  echo "WARNING: Certificate expires within 30 days!"
fi

Verificar múltiples dominios a la vez

Si administras varios dominios, puedes verificarlos todos en un bucle:

for domain in example.com www.example.com api.example.com; do
  expiry=$(echo | openssl s_client -connect "$domain":443 -servername "$domain" 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null | cut -d= -f2)
  echo "$domain — expires: $expiry"
done

Monitoreo automatizado con cron

Crea una tarea cron diaria que te envíe un correo cuando un certificado esté a menos de 30 días de expirar:

#!/bin/bash
# Save as /usr/local/bin/check-ssl-expiry.sh

DOMAINS="example.com www.example.com api.example.com"
WARN_DAYS=30
WARN_SECS=$((WARN_DAYS * 86400))

for domain in $DOMAINS; do
  if ! echo | openssl s_client -connect "$domain":443 -servername "$domain" 2>/dev/null | \
    openssl x509 -noout -checkend $WARN_SECS > /dev/null 2>&1; then
    echo "WARNING: $domain certificate expires within $WARN_DAYS days" | \
      mail -s "SSL Expiry Warning: $domain" admin@example.com
  fi
done

Añadir a crontab: 0 9 * * * /usr/local/bin/check-ssl-expiry.sh

Configurar servicios de monitoreo

Para un enfoque más robusto, usa un servicio de monitoreo:

MétodoCómoCostoOpciones de alerta
Recordatorio en calendarioConfigurar 60 días después de la emisiónGratisManual
Script cronEjecutar el script de verificación diariamenteGratisCorreo electrónico
UptimeRobotAñadir monitor SSL, configurar umbral de alertaNivel gratuitoCorreo, Slack, webhook
Better UptimeMonitoreo SSL con gestión de incidentesNivel gratuitoCorreo, SMS, Slack
Renovación automática con Certbotcertbot renew vía systemd timerGratisPreviene el vencimiento por completo

Para los certificados de 90 días de Let’s Encrypt, renueva en el día 60 (margen de 30 días).

¿Qué detalles del certificado debo verificar?

Además de la fecha de vencimiento, verifica periódicamente:

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -text | grep -E 'Subject:|Issuer:|Not After|DNS:'

Esto muestra:

  • Subject/SAN — el certificado cubre los dominios correctos
  • Issuer — emitido por la CA esperada (por ejemplo, Let’s Encrypt)
  • Not After — fecha de vencimiento
  • DNS names — todos los nombres de dominio en el campo SAN

Preguntas frecuentes

¿Qué sucede cuando un certificado expira?

Los navegadores muestran una advertencia a página completa como «Tu conexión no es privada» (Chrome) o «Advertencia: riesgo potencial de seguridad» (Firefox). La mayoría de los visitantes abandonarán el sitio inmediatamente. Los motores de búsqueda también pueden bajar de posición o desindexar tus páginas hasta que se renueve el certificado.

¿Con qué frecuencia debo verificar?

Si tienes renovación automática (Certbot), verifica mensualmente como red de seguridad. Si renuevas manualmente (GetHTTPS), verifica en el día 50 y configura un recordatorio firme en el día 60. Con la validez de 47 días que llegará en 2029, el monitoreo se vuelve aún más crítico.

¿Puedo verificar el vencimiento sin acceso a la línea de comandos?

Sí. Herramientas en línea como SSL Labs Server Test y SSL Checker de SSL Shopper muestran los detalles del certificado, incluyendo las fechas de vencimiento; solo ingresa tu dominio. Las DevTools del navegador también lo muestran (icono de candado → Detalles del certificado).

¿Qué pasa si mi certificado ya expiró?

Renuévalo inmediatamente. Visita GetHTTPS para obtener un nuevo certificado, reemplaza los archivos en tu servidor y recarga el servidor web. El proceso toma 5 minutos. No hay penalización por dejar que un certificado expire; simplemente renueva e instala el nuevo.

¿Puedo monitorear múltiples dominios desde un solo script?

Sí. Aquí tienes un script que verifica todos tus dominios y muestra los días restantes:

#!/bin/bash
for domain in example.com www.example.com api.example.com; do
  expiry=$(echo | openssl s_client -connect "$domain":443 -servername "$domain" 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)
  days_left=$(( ($(date -d "$expiry" +%s) - $(date +%s)) / 86400 ))
  if [ "$days_left" -lt 30 ]; then
    echo "WARNING $domain: $days_left days left"
  else
    echo "OK $domain: $days_left days left"
  fi
done

Nota: La sintaxis date -d es específica de Linux. En macOS, usa date -j -f "%b %d %H:%M:%S %Y %Z".

Artículos relacionados

Primeros pasos 2026-05-07
Cómo renovar un certificado de Let's Encrypt
Los certificados de Let's Encrypt expiran cada 90 días. Aprende cómo renovar con GetHTTPS (manual) o Certbot (automático), y prepárate para la validez de 47 días.
SSL y certificados 2026-05-07
Validez de certificados SSL: el cambio a 47 días explicado
El CA/Browser Forum votó reducir la validez de certificados SSL a 47 días para 2029. Conoce el cronograma, qué significa para tu sitio web y cómo prepararte.
Despliegue 2026-05-08
Cómo instalar un certificado SSL en Nginx
Guía paso a paso para instalar un certificado SSL en Nginx. Cubre subida de archivos, configuración completa del bloque server, mejores prácticas TLS, HTTP/2, HSTS, redirección y solución de 6 errores comunes.
Obtén un certificado SSL gratuito en tu navegador
Sin instalación, sin cuenta. Tu clave privada nunca sale de tu dispositivo.
Obtener certificado