Aller au contenu
ecdsa.com
GNU Wget built with OpenSSL (Ubuntu 22.04+, Alpine, RHEL/CentOS)curl

Message d’erreur

ERROR: cannot verify api.example.com's certificate, issued by 'CN=Example Private CA':

Également affiché sous la forme

  • Unable to locally verify the issuer's authority.

Le nom d’hôte et le nom distinctif de l’émetteur changent d’un site à l’autre. Les builds de wget reposant sur GnuTLS (Debian) signalent le même échec par « ERROR: The certificate of '<host>' is not trusted. »

Ce que cela signifie

Le backend OpenSSL de wget n’a pas pu vérifier le certificat du serveur, dont l’émetteur est cité après « issued by ». La ligne indentée que wget affiche ensuite donne la raison indiquée par OpenSSL ; « Unable to locally verify the issuer's authority » signifie que l’émetteur ne figure pas dans le fichier d’AC local et que le serveur n’a pas envoyé de certificat menant à l’une des AC de ce fichier. wget s’arrête avec le code de sortie 5.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Lire la ligne indentée qui donne la raison

    La ligne qui suit l’erreur (ERROR) indique lequel des contrôles d’OpenSSL a échoué, et donc s’il faut corriger la confiance, la chaîne du serveur ou les dates.

    text
    ERROR: cannot verify api.example.com's certificate, issued by 'CN=Example Private CA':
      Unable to locally verify the issuer's authority.     <- issuer unknown: CA or chain problem
      Self-signed certificate encountered.                 <- server certificate is self-signed
      Issued certificate has expired.                      <- date problem
  2. 2.

    Indiquer l’AC à wget

    Passez la racine (ou un fichier d’AC) avec --ca-certificate, ou définissez ca_certificate dans ~/.wgetrc ou /etc/wgetrc.

    bash
    wget --ca-certificate=/opt/certs/corp-root-ca.pem https://api.example.com/
    echo 'ca_certificate = /opt/certs/corp-root-ca.pem' >> ~/.wgetrc
  3. 3.

    Installer la racine dans le fichier d’AC du système

    wget compilé avec OpenSSL lit le fichier d’AC de la distribution : y ajouter la racine corrige donc d’un coup wget, curl et la plupart des autres outils de la machine.

    bash
    # Ubuntu / Alpine
    sudo cp corp-root-ca.pem /usr/local/share/ca-certificates/corp-root-ca.crt && sudo update-ca-certificates
    # RHEL / Fedora
    sudo cp corp-root-ca.pem /etc/pki/ca-trust/source/anchors/ && sudo update-ca-trust
  4. 4.

    Propriétaires de serveurs : servir la chaîne complète

    Lorsque l’émetteur est une AC intermédiaire publique, configurez le serveur avec le certificat feuille suivi des certificats intermédiaires.

    bash
    # Server side: serve leaf + intermediates
    cat api.example.com.crt intermediate.crt > fullchain.pem
  5. 5.

    Diagnostic temporaire : ignorer la vérification une seule fois

    --no-check-certificate permet de confirmer si le téléchargement fonctionnerait sans cette vérification. Cette option accepte n’importe quel certificat, y compris celui d’un attaquant : ne l’utilisez donc pas pour ce que vous exécutez ou ce à quoi vous faites confiance.

    bash
    # Diagnostic only
    wget --no-check-certificate -O /dev/null https://api.example.com/

Erreurs associées

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