Aller au contenu
ecdsa.com
OpenSSL CLI (openssl s_client / openssl verify)CLI OpenSSL

Message d’erreur

verify error:num=10:certificate has expired

Également affiché sous la forme

  • error 10 at 0 depth lookup: certificate has expired
  • Verify return code: 10 (certificate has expired)

s_client affiche « verify error:num=10:certificate has expired » suivi de « notAfter=… » ; openssl verify affiche « error 10 at <depth> depth lookup: certificate has expired ». Les certificats qui ne sont pas encore valides donnent l’erreur 9, « certificate is not yet valid ».

OpenSSL CLI (openssl s_client / openssl verify) — X509_V_ERR_CERT_HAS_EXPIRED

Ce que cela signifie

Erreur OpenSSL 10 (X509_V_ERR_CERT_HAS_EXPIRED) : un certificat de la chaîne a une date notAfter passée par rapport à l’heure de vérification, qui est celle de l’horloge locale sauf si -attime est indiqué. La ligne depth affichée avec l’erreur indique de quel certificat il s’agit : 0 correspond à celui du serveur, les numéros supérieurs à des certificats intermédiaires.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Identifier le certificat expiré

    Lisez les lignes depth et notAfter ; -checkend indique si un fichier de certificat expire dans un nombre de secondes donné, ce qui est pratique pour la surveillance.

    bash
    # The depth printed with the error identifies the certificate; s_client also prints notAfter
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>&1 | grep -E '^depth|verify error|notAfter'
    # Check a file, and whether it expires within 30 days (exit 1 = yes)
    openssl x509 -in server.pem -noout -enddate -checkend 2592000
  2. 2.

    Vérifier à une date choisie

    openssl verify -attime <unix time> montre si la chaîne était valide à ce moment-là, ce qui distingue l’expiration des autres erreurs.

    bash
    # Would the chain verify at another moment? (useful to separate clock problems)
    openssl verify -attime "$(date -d '2025-02-01' +%s)" -CAfile root.pem server.pem
  3. 3.

    Renouveler et recharger

    Renouvelez le certificat, rechargez le composant qui termine TLS, quel qu’il soit, et confirmez la nouvelle date d’expiration côté réseau.

    bash
    sudo certbot renew && sudo systemctl reload nginx
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null | openssl x509 -noout -enddate

Erreurs associées

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