Message d’erreur
ERROR: The certificate of 'api.example.com' has expired.
Les builds de wget reposant sur GnuTLS affichent cette ligne après la ligne générique « ERROR: The certificate of '<host>' is not trusted. » et avant « The certificate has expired ». Les builds reposant sur OpenSSL affichent « ERROR: cannot verify <host>'s certificate, issued by '…': », suivi de « Issued certificate has expired. »
Ce que cela signifie
Le certificat du serveur (ou un autre certificat de sa chaîne) a dépassé sa date notAfter selon l’horloge de cette machine, et le backend GnuTLS de wget refuse la connexion. L’AC est approuvée ; seule la période de validité pose problème. wget se termine avec le code de sortie 5.
Pourquoi cela se produit
Le certificat n’a pas été renouvelé
fréquenteUne tâche de renouvellement qui ne s’exécute plus, un challenge ACME qui échoue après une modification du DNS ou du pare-feu, ou un certificat installé manuellement que personne ne suivait.
Un certificat renouvelé est sur le disque, mais n’est pas servi
fréquenteLe terminateur TLS (nginx, Apache, HAProxy, un répartiteur de charge ou un CDN) continue de servir le certificat chargé précédemment, jusqu’à ce qu’il soit lui-même rechargé ou que le nouveau certificat y soit importé.
L’horloge du client est fausse
occasionnelleUne machine dont l’horloge est très en avance voit des certificats valides comme expirés. Les cartes embarquées sans horloge temps réel démarrent souvent avec une date erronée, jusqu’à ce que NTP ait synchronisé l’heure.
Comment corriger l’erreur
- 1.
Vérifier les dates du certificat réellement servi
Comparez notAfter avec l’heure UTC actuelle. Si le certificat servi est ancien alors qu’il en existe un plus récent, le serveur ne l’a pas pris en compte.
bash echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \ | openssl x509 -noout -subject -startdate -enddate - 2.
Renouveler et recharger
Renouvelez via votre client ACME ou votre AC, puis rechargez chaque service qui termine TLS pour ce nom ; automatisez les deux étapes pour que le prochain renouvellement ne dépende pas de la mémoire de quelqu’un.
bash sudo certbot renew --cert-name api.example.com sudo systemctl reload nginx # or apache2 / haproxy: reload whatever terminates TLS - 3.
Corriger l’heure du client
Si le certificat est valide lorsqu’il est vérifié depuis une autre machine, activez NTP sur celle où l’erreur se produit.
bash date -u timedatectl status sudo timedatectl set-ntp true
Erreurs associées
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