Aller au contenu
ecdsa.com
GNU Wget built with GnuTLS (Debian)curl

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

Comment corriger l’erreur

  1. 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. 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. 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

Parcourir toute la base de données des erreurs de signature