Fehlermeldung
verify error:num=79:invalid CA certificate
Auch ausgegeben als
- error 79 at 1 depth lookup: invalid CA certificate
OpenSSL 3.0.13 und 3.5.7 melden diesen Fall beide als Fehler 79 (ältere Referenzen führen „invalid CA certificate“ als Fehler 24, den es für andere CA-Prüfungen weiterhin gibt). s_client gibt für dasselbe Zertifikat außerdem Fehler 26 aus, „unsuitable certificate purpose“, und seine Zusammenfassungszeile zeigt diesen letzten Code.
OpenSSL 3.x CLI (openssl s_client / openssl verify) — X509_V_ERR_INVALID_CA
Was der Fehler bedeutet
OpenSSL-Fehler 79 (X509_V_ERR_INVALID_CA): Ein Zertifikat, das in der Kette an der Position eines Ausstellers steht, ist kein gültiges CA-Zertifikat – seine basicConstraints lauten CA:FALSE oder fehlen, oder seine keyUsage erlaubt das Signieren von Zertifikaten nicht. Die Tiefe in der Meldung von openssl verify zeigt auf das betreffende Zertifikat (1 ist das erste Zwischenzertifikat).
Warum der Fehler auftritt
Der Aussteller ist ein End-Entity-Zertifikat
häufigZertifikate, die mit dem Schlüssel eines Server- oder Client-Zertifikats signiert wurden – typisch für selbst gebaute PKI-Skripte.
Dem CA-Zertifikat fehlt keyCertSign
gelegentlichEin Zwischenzertifikat, dessen keyUsage kein keyCertSign enthält, ist selbst mit CA:TRUE nicht als Aussteller verwendbar.
Pfadlängenbeschränkung überschritten
seltenEin Zwischenzertifikat unterhalb einer CA mit pathlen:0 wird nicht als Aussteller akzeptiert; baue die Hierarchie um oder stelle das Zertifikat mit einem passenden pathlen neu aus.
So behebst du den Fehler
- 1.
Zertifikat auf der gemeldeten Tiefe untersuchen
basicConstraints müssen CA:TRUE (critical) lauten, und keyUsage muss keyCertSign enthalten.
bash # The certificate at the depth named in the error must be a CA openssl x509 -in int.pem -noout -subject -ext basicConstraints,keyUsage - 2.
Zwischenzertifikat als CA neu ausstellen
Signiere es mit CA-Erweiterungen neu; die von ihm ausgestellten Zertifikate bleiben gültig, wenn Schlüssel und Subject unverändert sind.
bash 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
x509: invalid signature: parent certificate cannot sign this kind of certificateGo crypto/x509verify error:num=26:unsuitable certificate purposeOpenSSL CLI (openssl s_client / openssl verify -purpose)verify error:num=20:unable to get local issuer certificateOpenSSL CLI (openssl s_client / openssl verify)