Zum Inhalt springen
ecdsa.com
pipPaketmanager

Fehlermeldung

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

Auch ausgegeben als

  • 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 gibt die Meldung als „Could not fetch URL <url>: There was a problem confirming the ssl certificate: … - skipping“ aus, nach mehreren Zeilen „WARNING: Retrying (Retry(total=…)) after connection broken by 'SSLError(…)'“. URL und abschließender Grund variieren.

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

Was der Fehler bedeutet

pip konnte das TLS-Zertifikat des Paketindex (oder einer find-links-URL) nicht prüfen, hat diese Seite deshalb übersprungen und endet meist mit „Could not find a version that satisfies the requirement“. Der Grund nach dem Doppelpunkt ist das Ergebnis der Prüfung durch OpenSSL. Seit pip 24.2 prüft pip über truststore mit dem Trust Store des Betriebssystems; entweder fehlt die CA also in diesem Trust Store, oder pip wurde angewiesen, ein anderes Bundle zu verwenden.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    CA im Trust Store des Betriebssystems installieren

    Mit pip 24.2+ unter Python 3.10+ wird Root-Zertifikaten im Trust Store des Systems (oder im Schlüsselbund / Windows-Zertifikatsspeicher) automatisch vertraut. Aktualisiere pip, wenn es älter ist.

    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.

    pip explizit ein CA-Bundle vorgeben

    global.cert in der Konfiguration von pip, PIP_CERT oder --cert lassen pip mit dieser Datei prüfen. Nimm auch die öffentlichen Root-Zertifikate auf, wenn pip außerdem mit pypi.org kommuniziert.

    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.

    Privaten Index einmalig konfigurieren

    Trage index-url und cert in die pip.conf (oder pip.ini) ein, damit jeder Aufruf von pip sie verwendet, auch Aufrufe innerhalb von Build-Tools.

    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.

    Vorübergehende Diagnose: --trusted-host

    --trusted-host schaltet die Zertifikatsprüfung für diesen Host ab und erlaubt pip dort reines HTTP. Das bestätigt die Diagnose, aber alles, was so heruntergeladen wird, könnte unterwegs ausgetauscht worden sein; lass die Option nicht in der Konfiguration stehen.

    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

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen