Zum Inhalt springen
ecdsa.com
GNU Wget built with GnuTLS (Debian)curl

Fehlermeldung

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

GnuTLS-Builds von wget geben diese Zeile nach dem allgemeinen „ERROR: The certificate of '<host>' is not trusted.“ und vor „The certificate has expired“ aus. OpenSSL-Builds geben „ERROR: cannot verify <host>'s certificate, issued by '…':“ aus, gefolgt von „Issued certificate has expired.“

Was der Fehler bedeutet

Laut der Uhr dieses Rechners ist das Datum in notAfter des Serverzertifikats (oder eines anderen Zertifikats in seiner Kette) überschritten, und das GnuTLS-Backend von wget verweigert die Verbindung. Der CA wird vertraut; nur die Prüfung des Gültigkeitszeitraums schlägt fehl. wget beendet sich mit Status 5.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Datumsangaben des tatsächlich ausgelieferten Zertifikats prüfen

    Vergleiche notAfter mit der aktuellen UTC-Zeit. Ist das ausgelieferte Zertifikat alt, obwohl es ein neueres gibt, hat der Server das neue nicht übernommen.

    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.

    Erneuern und neu laden

    Erneuere das Zertifikat über deinen ACME-Client oder deine CA und lade dann jeden Dienst neu, der TLS für den Namen terminiert; automatisiere beide Schritte, damit die nächste Erneuerung nicht davon abhängt, dass jemand daran denkt.

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

    Uhrzeit des Clients korrigieren

    Ist das Zertifikat bei einer Prüfung von einem anderen Rechner aus gültig, aktiviere NTP auf dem Rechner mit dem Fehler.

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

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen