Mensaje de error
verify error:num=79:invalid CA certificate
También se muestra como
- error 79 at 1 depth lookup: invalid CA certificate
Tanto OpenSSL 3.0.13 como 3.5.7 notifican este caso como error 79 (las referencias más antiguas recogen «invalid CA certificate» como error 24, que sigue existiendo para otras comprobaciones de CA). s_client también imprime el error 26, «unsuitable certificate purpose», para el mismo certificado, y la línea de su informe final muestra ese último código.
OpenSSL 3.x CLI (openssl s_client / openssl verify) — X509_V_ERR_INVALID_CA
Qué significa
Error 79 de OpenSSL (X509_V_ERR_INVALID_CA): un certificado que ocupa una posición de emisor en la cadena no es un certificado de CA válido: su basicConstraints dice CA:FALSE o no existe, o su keyUsage no permite firmar certificados. La profundidad del mensaje de openssl verify señala el certificado problemático (1 es el primer intermedio).
Por qué ocurre
El emisor es un certificado de entidad final
frecuenteCertificados firmados con la clave de un certificado de servidor o de un certificado de cliente, algo típico de los scripts de PKI caseros.
Al certificado de CA le falta keyCertSign
ocasionalUn intermedio cuyo keyUsage omite keyCertSign no se puede usar como emisor, aunque tenga CA:TRUE.
Se superó la restricción de longitud de ruta
raraUn intermedio por debajo de una CA con pathlen:0 no se acepta como emisor; reestructura la jerarquía o vuelve a emitir con un pathlen adecuado.
Cómo solucionarlo
- 1.
Inspeccionar el certificado de la profundidad indicada
basicConstraints debe ser CA:TRUE (crítica) y keyUsage debe incluir 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.
Volver a emitir el intermedio como CA
Vuelve a firmarlo con extensiones de CA; los certificados que emitió siguen siendo válidos si la clave y el sujeto no cambian.
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
Errores relacionados
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)