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

Message d’erreur

verify error:num=19:self-signed certificate in certificate chain

Également affiché sous la forme

  • verify error:num=19:self signed certificate in certificate chain
  • error 19 at 2 depth lookup: self-signed certificate in certificate chain

OpenSSL 3.x affiche « self-signed », 1.1.1 « self signed ». openssl verify la signale sous la forme « error 19 at <depth> depth lookup: … », où la profondeur est la position de la racine dans la chaîne.

OpenSSL CLI (openssl s_client / openssl verify) — X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN

Ce que cela signifie

Erreur OpenSSL 19 (X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN) : la chaîne a été construite jusqu’à un certificat racine auto-signé fourni par le pair, et cette racine ne figure pas dans le magasin de confiance. Contrairement à l’erreur 18, il existe une véritable hiérarchie d’AC ; contrairement à l’erreur 20, rien ne manque. Soit la racine doit être approuvée localement, soit la connexion est interceptée.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Identifier la racine et son empreinte

    Découpez la chaîne servie et affichez le sujet, l’émetteur et l’empreinte SHA-256 de chaque certificat ; comparez l’empreinte de la racine avec celle que publie votre équipe informatique ou PKI.

    bash
    openssl s_client -connect api.example.com:443 -servername api.example.com -showcerts </dev/null 2>/dev/null \
      | awk '/BEGIN CERT/{n++} {print > ("cert" n ".pem")}'
    for f in cert[0-9]*.pem; do openssl x509 -in "$f" -noout -subject -issuer -fingerprint -sha256 2>/dev/null; done
  2. 2.

    Tester avec la bonne racine, puis l’installer

    Si -CAfile avec la racine publiée donne « Verify return code: 0 (ok) », installez cette racine dans le magasin du système.

    bash
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com \
      -CAfile corp-root-ca.pem 2>&1 | grep 'Verify return code'
    sudo cp corp-root-ca.pem /usr/local/share/ca-certificates/corp-root-ca.crt && sudo update-ca-certificates
  3. 3.

    Propriétaires de serveurs : n’envoyer que le certificat feuille et les intermédiaires

    Envoyer la racine gaspille des octets à chaque handshake et ne la rend jamais approuvée ; distribuez plutôt la racine aux clients.

    bash
    # Server owners: the root does not belong in the served chain
    cat server.pem intermediate.pem > fullchain.pem

Erreurs associées

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