Saltar al contenido
ecdsa.com
GNU Wget built with GnuTLS (Debian)curl

Mensaje de error

ERROR: The certificate of 'api.example.com' has expired.

Las compilaciones de wget con GnuTLS imprimen esta línea después del mensaje genérico «ERROR: The certificate of '<host>' is not trusted.» y antes de «The certificate has expired». Las compilaciones con OpenSSL imprimen «ERROR: cannot verify <host>'s certificate, issued by '…':» seguido de «Issued certificate has expired.»

Qué significa

Según el reloj de este equipo, el certificado del servidor (u otro certificado de su cadena) ha superado su fecha notAfter, y el wget compilado con GnuTLS rechaza la conexión. La CA es de confianza; lo único que falla es el período de validez. wget termina con el código de salida 5.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Comprobar las fechas del certificado que se sirve realmente

    Compara notAfter con la hora UTC actual. Si el certificado servido es el antiguo, pero existe uno más reciente, el servidor no lo ha cargado.

    bash
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \
      | openssl x509 -noout -subject -startdate -enddate
  2. 2.

    Renovar y recargar

    Renueva con tu cliente ACME o tu CA y después recarga todos los servicios que terminan TLS para ese nombre; automatiza ambos pasos para que la próxima renovación no dependa de que alguien se acuerde.

    bash
    sudo certbot renew --cert-name api.example.com
    sudo systemctl reload nginx     # or apache2 / haproxy: reload whatever terminates TLS
  3. 3.

    Corregir la hora del cliente

    Si el certificado es válido cuando se comprueba desde otro equipo, activa NTP en el que falla.

    bash
    date -u
    timedatectl status
    sudo timedatectl set-ntp true

Errores relacionados

Explorar toda la base de datos de errores de firma