Zum Inhalt springen
ecdsa.com
GNU Wget built with OpenSSL (Ubuntu 22.04+, Alpine, RHEL/CentOS)curl

Fehlermeldung

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

Auch ausgegeben als

  • Unable to locally verify the issuer's authority.

Hostname und Distinguished Name des Ausstellers ändern sich mit jeder Website. GnuTLS-Builds von wget (Debian) melden denselben Fehler als „ERROR: The certificate of '<host>' is not trusted.“

Was der Fehler bedeutet

Das OpenSSL-Backend von wget konnte das Serverzertifikat nicht prüfen; dessen Aussteller steht in der Meldung nach „issued by“. Die eingerückte Zeile, die wget danach ausgibt, nennt den Grund von OpenSSL. „Unable to locally verify the issuer's authority“ bedeutet, dass der Aussteller nicht im lokalen CA-Bundle steht und der Server kein Zertifikat gesendet hat, das zu einem Zertifikat aus diesem Bundle führt. wget bricht mit Exit-Status 5 ab.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Eingerückte Zeile mit dem Grund lesen

    Die Zeile unter der ERROR-Zeile zeigt, welche der OpenSSL-Prüfungen fehlgeschlagen ist – und damit, ob du das Vertrauen, die Kette des Servers oder die Datumsangaben korrigieren musst.

    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.

    wget auf die CA verweisen

    Übergib das Root-Zertifikat (oder ein Bundle) mit --ca-certificate oder setze ca_certificate in ~/.wgetrc oder /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.

    Root-Zertifikat im System-Bundle installieren

    wget auf OpenSSL-Basis liest das Bundle der Distribution; trägst du das Root-Zertifikat dort ein, behebt das den Fehler für wget, curl und die meisten anderen Tools auf dem Rechner auf einmal.

    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.

    Eigener Server: vollständige Kette ausliefern

    Ist der Aussteller eine öffentliche Zwischen-CA, konfiguriere den Server mit dem Leaf-Zertifikat, gefolgt von den Zwischenzertifikaten.

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

    Vorübergehende Diagnose: Prüfung einmalig überspringen

    --no-check-certificate zeigt, ob der Download ansonsten funktionieren würde. Die Option akzeptiert jedes Zertifikat, auch das eines Angreifers; verwende sie deshalb für nichts, was du ausführst oder worauf du dich verlässt.

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

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen