Zum Inhalt springen
ecdsa.com
Go crypto/x509Go

Fehlermeldung

x509: invalid signature: parent certificate cannot sign this kind of certificate

Auch ausgegeben als

  • x509: certificate signed by unknown authority (possibly because of "x509: invalid signature: parent certificate cannot sign this kind of certificate" while trying to verify candidate authority certificate "Example Issuing Server")

Go verpackt den Fehler als „x509: certificate signed by unknown authority (possibly because of \"x509: invalid signature: parent certificate cannot sign this kind of certificate\" while trying to verify candidate authority certificate \"<issuer CN>\")“. Der Name des Ausstellers stammt aus deiner Kette.

Go crypto/x509 — ConstraintViolationError: the issuer is not a CA (basicConstraints CA:FALSE or missing keyCertSign)

Was der Fehler bedeutet

Go hat für ein Zertifikat einen möglichen Aussteller gefunden (am Ende in Anführungszeichen genannt), aber dieser Aussteller darf keine Zertifikate signieren: Seine basicConstraints lauten CA:FALSE (oder fehlen), oder seiner keyUsage fehlt keyCertSign. Go verwirft ihn deshalb und meldet, da es keinen anderen Pfad gibt, „certificate signed by unknown authority“ mit diesem Grund als wahrscheinlicher Ursache.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    basicConstraints und keyUsage des Ausstellers prüfen

    Der in Anführungszeichen genannte Kandidat muss CA:TRUE und keyCertSign haben. OpenSSL 3.5 meldet denselben Mangel als Fehler 79, „invalid CA certificate“.

    bash
    # Every issuing certificate needs CA:TRUE (and keyCertSign if keyUsage is present)
    openssl x509 -in intermediate.pem -noout -subject -ext basicConstraints,keyUsage
    openssl verify -CAfile root.pem -untrusted intermediate.pem server.pem   # OpenSSL 3.5: error 79, invalid CA certificate
  2. 2.

    Zwischenzertifikat als CA neu ausstellen

    Signiere es mit basicConstraints critical CA:TRUE (pathlen nach Bedarf) und keyUsage keyCertSign, cRLSign, und stelle dann die Leaf-Zertifikate neu aus oder verkette sie neu.

    bash
    # Issue the intermediate as a real CA
    printf 'basicConstraints=critical,CA:TRUE,pathlen:0\nkeyUsage=critical,keyCertSign,cRLSign\n' > ca.ext
    openssl x509 -req -in int.csr -CA root.pem -CAkey root.key -days 1825 -extfile ca.ext -out int.pem

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen