Mensagem de erro
verify error:num=79:invalid CA certificate
Também aparece como
- error 79 at 1 depth lookup: invalid CA certificate
O OpenSSL 3.0.13 e o 3.5.7 informam esse caso como erro 79 (referências mais antigas listam “invalid CA certificate” como erro 24, que ainda existe para outras verificações de CA). O s_client também imprime o erro 26, “unsuitable certificate purpose”, para o mesmo certificado, e a linha de resumo dele mostra esse último código.
OpenSSL 3.x CLI (openssl s_client / openssl verify) — X509_V_ERR_INVALID_CA
O que significa
Erro 79 do OpenSSL (X509_V_ERR_INVALID_CA): um certificado que ocupa uma posição de emissor na cadeia não é um certificado de CA válido — o basicConstraints dele diz CA:FALSE ou está ausente, ou o keyUsage não permite assinar certificados. A profundidade na mensagem do openssl verify aponta para o certificado problemático (1 é o primeiro intermediário).
Por que acontece
O emissor é um certificado de entidade final
comumCertificados assinados com a chave de um certificado de servidor ou de um certificado de cliente, algo típico de scripts de PKI feitos à mão.
O certificado da CA não tem keyCertSign
ocasionalUm intermediário cujo keyUsage não inclui keyCertSign não pode ser usado como emissor, mesmo com CA:TRUE.
Restrição de comprimento de caminho excedida
raraUm intermediário abaixo de uma CA com pathlen:0 não é aceito como emissor; reestruture a hierarquia ou reemita com um pathlen adequado.
Como corrigir
- 1.
Inspecionar o certificado na profundidade informada
O basicConstraints precisa ser CA:TRUE (crítico) e o keyUsage precisa 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.
Reemitir o intermediário como CA
Assine-o novamente com extensões de CA; os certificados que ele emitiu continuam válidos se a chave e o titular não mudarem.
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
Erros 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)