Message d’erreur
verify error:num=79:invalid CA certificate
Également affiché sous la forme
- error 79 at 1 depth lookup: invalid CA certificate
OpenSSL 3.0.13 et 3.5.7 signalent tous deux ce cas comme l’erreur 79 (des références plus anciennes rangent « invalid CA certificate » sous l’erreur 24, un code qui existe toujours pour d’autres contrôles d’AC). s_client affiche aussi l’erreur 26, « unsuitable certificate purpose », pour le même certificat, et sa ligne récapitulative indique ce dernier code.
OpenSSL 3.x CLI (openssl s_client / openssl verify) — X509_V_ERR_INVALID_CA
Ce que cela signifie
Erreur OpenSSL 79 (X509_V_ERR_INVALID_CA) : un certificat qui occupe une position d’émetteur dans la chaîne n’est pas un certificat d’AC valide ; ses basicConstraints indiquent CA:FALSE ou sont absentes, ou son keyUsage n’autorise pas la signature de certificats. La profondeur indiquée dans le message d’openssl verify désigne le certificat fautif (1 correspond au premier certificat intermédiaire).
Pourquoi cela se produit
L’émetteur est un certificat d’entité finale
fréquenteDes certificats signés avec la clé d’un certificat serveur ou d’un certificat client, ce qui est typique des scripts de PKI maison.
Le certificat d’AC ne comporte pas keyCertSign
occasionnelleUn certificat intermédiaire dont le keyUsage omet keyCertSign ne peut pas servir d’émetteur, même avec CA:TRUE.
Contrainte de longueur de chemin dépassée
rareUn certificat intermédiaire placé sous une AC dotée de pathlen:0 n’est pas accepté comme émetteur ; restructurez la hiérarchie ou réémettez avec un pathlen adapté.
Comment corriger l’erreur
- 1.
Inspecter le certificat à la profondeur signalée
Les basicConstraints doivent indiquer CA:TRUE (extension marquée critique) et le keyUsage doit inclure keyCertSign.
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.
Réémettre le certificat intermédiaire comme AC
Signez-le de nouveau avec les extensions d’AC ; les certificats qu’il a émis restent valides si la clé et le sujet ne changent pas.
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
Erreurs associées
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)