Zum Inhalt springen
ecdsa.com
OpenSSL CLI (openssl s_client / openssl verify)OpenSSL-CLI

Fehlermeldung

verify error:num=18:self-signed certificate

Auch ausgegeben als

  • verify error:num=18:self signed certificate
  • Verify return code: 18 (self-signed certificate)
  • error 18 at 0 depth lookup: self-signed certificate

OpenSSL 3.x gibt „self-signed“ aus, 1.1.1 „self signed“. s_client zeigt „verify error:num=18:…“ und „Verify return code: 18 (…)“; openssl verify zeigt „error 18 at 0 depth lookup: …“.

OpenSSL CLI (openssl s_client / openssl verify) — X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT

Was der Fehler bedeutet

OpenSSL-Fehler 18 (X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT): Das Zertifikat auf Tiefe 0 ist selbstsigniert – sein Aussteller ist es selbst – und steht nicht im Trust Store. Über ihm gibt es keine CA, deshalb hilft weder ein Zwischenzertifikat noch ein Bundle; dem Zertifikat muss direkt vertraut werden, oder es muss durch eines ersetzt werden, das eine CA ausgestellt hat.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Bestätigen, dass Subject und Aussteller identisch sind

    Stimmt das Subject mit dem Aussteller überein, ist das Zertifikat selbstsigniert; seinen Fingerabdruck vergleichst du mit dem erwarteten Wert.

    bash
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \
      | openssl x509 -noout -subject -issuer -fingerprint -sha256
    # subject == issuer: self-signed
  2. 2.

    Für Tests genau diesem Zertifikat vertrauen

    Übergibst du das Zertifikat selbst als -CAfile, akzeptiert OpenSSL genau dieses Zertifikat. Bestätige vorher den Fingerabdruck über einen vertrauenswürdigen Kanal.

    bash
    # Trust this exact certificate for a check (after confirming the fingerprint out of band)
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null | openssl x509 -out api.pem
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com -CAfile api.pem 2>&1 | grep 'Verify return code'
  3. 3.

    Root-Zertifikat gegen sich selbst prüfen

    Die Prüfung eines selbstsignierten Root-Zertifikats gelingt nur, wenn es selbst der Vertrauensanker ist: Übergib es als -CAfile.

    bash
    # Verifying a root CA certificate itself needs the root as its own trust anchor
    openssl verify -CAfile root.pem root.pem      # root.pem: OK

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen