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
Das Zertifikat wurde nicht erneuert
häufigEin Erneuerungsjob, der nicht mehr läuft, eine ACME-Challenge, die nach einer Änderung an DNS oder Firewall scheitert, oder ein von Hand installiertes Zertifikat, um das sich niemand gekümmert hat.
Das erneuerte Zertifikat liegt auf der Festplatte, wird aber nicht ausgeliefert
häufigDie Instanz, die TLS terminiert (nginx, Apache, HAProxy, ein Load Balancer oder CDN), liefert weiter das zuvor geladene Zertifikat aus, bis sie neu geladen oder das neue Zertifikat hochgeladen wird.
Die Uhr des Clients geht falsch
gelegentlichEin Rechner, dessen Uhr weit in der Zukunft steht, hält gültige Zertifikate für abgelaufen. Embedded-Boards ohne Echtzeituhr starten oft mit einem falschen Datum, bis NTP die Zeit synchronisiert hat.
So behebst du den Fehler
- 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.
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.
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
ERROR: The certificate of 'api.example.com' is not trusted.GNU Wget built with GnuTLS (Debian, Ubuntu before 22.04 used it too)curl: (60) SSL certificate problem: certificate has expiredcurl (OpenSSL backend)verify error:num=10:certificate has expiredOpenSSL CLI (openssl s_client / openssl verify)x509: certificate has expired or is not yet valid: current time 2026-08-20T15:4…Go crypto/x509