Aller au contenu
ecdsa.com
pipGestionnaires de paquets

Message d’erreur

There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

Également affiché sous la forme

  • Could not fetch URL https://pypi.example.com/simple/requests/: There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate

pip l’affiche sous la forme « Could not fetch URL <url>: There was a problem confirming the ssl certificate: … - skipping », après plusieurs lignes « WARNING: Retrying (Retry(total=…)) after connection broken by 'SSLError(…)' ». L’URL et la raison finale varient.

pip — index or find-links URL over HTTPS (pip 24.2+ verifies with truststore by default)

Ce que cela signifie

pip n’a pas pu vérifier le certificat TLS de l’index de paquets (ou d’une URL find-links) ; il a donc ignoré cette page et se termine généralement par « Could not find a version that satisfies the requirement ». La raison qui suit les deux-points est le résultat de la vérification par OpenSSL. Depuis pip 24.2, pip vérifie les certificats avec le magasin de confiance du système d’exploitation via truststore : soit l’AC est absente du magasin du système, soit pip est configuré pour utiliser un autre fichier d’AC.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Installer l’AC dans le magasin de confiance du système

    Avec pip 24.2+ sous Python 3.10+, les racines du magasin du système (ou du Trousseau / du magasin Windows) sont approuvées automatiquement. Mettez pip à niveau s’il est plus ancien.

    bash
    # pip >= 24.2 uses the OS trust store (truststore): add the CA there
    sudo cp corp-root-ca.pem /usr/local/share/ca-certificates/corp-root-ca.crt
    sudo update-ca-certificates
    python3 -m pip --version     # upgrade pip itself if it is older than 24.2
  2. 2.

    Indiquer explicitement un fichier d’AC à pip

    global.cert dans la configuration de pip, PIP_CERT ou --cert amènent pip à vérifier les certificats avec ce fichier. Incluez-y aussi les racines publiques si pip communique également avec pypi.org.

    bash
    # A CA bundle for pip only (one of these):
    python3 -m pip config set global.cert /etc/ssl/private-ca/corp-ca-bundle.pem
    export PIP_CERT=/etc/ssl/private-ca/corp-ca-bundle.pem
    python3 -m pip install --cert /etc/ssl/private-ca/corp-ca-bundle.pem requests
  3. 3.

    Configurer l’index privé une fois pour toutes

    Placez index-url et cert dans pip.conf (ou pip.ini) pour que chaque invocation de pip, y compris depuis des outils de build, les utilise.

    ini
    # pip.conf (Linux: ~/.config/pip/pip.conf, Windows: %APPDATA%\pip\pip.ini)
    [global]
    index-url = https://pypi.example.com/simple/
    cert = /etc/ssl/private-ca/corp-ca-bundle.pem
  4. 4.

    Diagnostic temporaire : --trusted-host

    --trusted-host désactive la vérification des certificats pour cet hôte et autorise pip à y utiliser du HTTP en clair. L’option confirme le diagnostic, mais tout ce qui est téléchargé de cette façon a pu être remplacé en transit ; ne la conservez pas dans la configuration.

    bash
    # Temporary diagnostic only: --trusted-host disables certificate checks for that host
    python3 -m pip download --no-deps -d /tmp/dl --index-url https://pypi.example.com/simple/ \
      --trusted-host pypi.example.com requests

Erreurs associées

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