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

Message d’erreur

verify error:num=18:self-signed certificate

Également affiché sous la forme

  • verify error:num=18:self signed certificate
  • Verify return code: 18 (self-signed certificate)
  • error 18 at 0 depth lookup: self-signed certificate

OpenSSL 3.x affiche « self-signed », 1.1.1 « self signed ». s_client affiche « verify error:num=18:… » et « Verify return code: 18 (…) » ; openssl verify affiche « error 18 at 0 depth lookup: … ».

OpenSSL CLI (openssl s_client / openssl verify) — X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT

Ce que cela signifie

Erreur OpenSSL 18 (X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT) : le certificat à la profondeur 0 est auto-signé (il est son propre émetteur) et ne figure pas dans le magasin de confiance. Aucune AC ne se trouve au-dessus de lui, si bien qu’aucun certificat intermédiaire ni aucun bundle ne peut aider ; le certificat doit être approuvé directement ou remplacé par un certificat émis par une AC.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Confirmer que le sujet et l’émetteur sont identiques

    Si le sujet est égal à l’émetteur, le certificat est auto-signé ; c’est son empreinte que vous comparez à la valeur attendue.

    bash
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \
      | openssl x509 -noout -subject -issuer -fingerprint -sha256
    # subject == issuer: self-signed
  2. 2.

    Approuver ce certificat précis pour les tests

    Utiliser le certificat lui-même comme -CAfile amène OpenSSL à accepter exactement ce certificat. Confirmez d’abord l’empreinte par un canal de confiance.

    bash
    # Trust this exact certificate for a check (after confirming the fingerprint out of band)
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null | openssl x509 -out api.pem
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com -CAfile api.pem 2>&1 | grep 'Verify return code'
  3. 3.

    Vérifier une racine par rapport à elle-même

    Une racine auto-signée ne se vérifie que lorsqu’elle est l’ancre de confiance : passez-la comme -CAfile.

    bash
    # Verifying a root CA certificate itself needs the root as its own trust anchor
    openssl verify -CAfile root.pem root.pem      # root.pem: OK

Erreurs associées

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