Mensaje de error
state=error: certificate verify failed (certificate has expired)
También se muestra como
- OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 peeraddr=127.0.0.1:8443 state=error: certificate verify failed (certificate has expired)
Mensaje completo: «SSL_connect returned=1 errno=0 peeraddr=<ip>:<port> state=error: certificate verify failed (certificate has expired)». Los certificados que aún no son válidos producen «(certificate is not yet valid)».
Ruby openssl (Net::HTTP, Faraday, RubyGems) — OpenSSL::SSL::SSLError from SSL_connect
Qué significa
OpenSSL encontró en la cadena un certificado cuyo período de validez terminó antes de la hora actual del equipo que ejecuta Ruby. Lo más habitual es que el certificado del servidor no se renovara o que la renovación no se desplegara; en sistemas antiguos, un bundle de CA desactualizado puede hacer que OpenSSL construya la ruta a través de una raíz caducada.
Por qué ocurre
El certificado del servidor caducó
frecuenteLa renovación falló o el servicio no se recargó después de la renovación.
Un bundle de CA desactualizado en un sistema antiguo
ocasionalLas imágenes y los servidores de larga vida cuyo paquete ca-certificates nunca se actualizó pueden conocer solo versiones caducadas de los certificados raíz públicos.
El reloj del sistema está mal
ocasionalUn reloj adelantado hace que los certificados válidos parezcan caducados.
Cómo solucionarlo
- 1.
Comprobar la fecha de fin del certificado servido
Si ya pasó, renuévalo; si es correcta, revisa el bundle y el reloj del cliente.
bash echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \ | openssl x509 -noout -subject -enddate - 2.
Actualizar el bundle de CA del cliente
Actualizar ca-certificates corrige los clientes que construyen rutas a través de certificados raíz retirados.
bash # Old images: refresh the CA bundle Ruby's OpenSSL uses apt-get update && apt-get install --only-upgrade -y ca-certificates ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE' - 3.
Renovar y recargar el servidor
Renueva el certificado y recarga el terminador TLS; comprueba el resultado desde el lado de la red.
bash sudo certbot renew && sudo systemctl reload nginx
Errores relacionados
curl: (60) SSL certificate problem: certificate has expiredcurl (OpenSSL backend)x509: certificate has expired or is not yet valid: current time 2026-08-20T15:4…Go crypto/x509state=error: certificate verify failed (unable to get local issuer certificate)Ruby openssl (Net::HTTP, Faraday, HTTParty, RubyGems)