verify error:num=20:unable to get local issuer certificate
Esse erro do OpenSSL significa que o programa não pôde verificar o emissor do certificado ou o certificado mais importante de uma cadeia fornecida. Isso pode acontecer em alguns casos, por exemplo:
- A cadeia de certificados do certificado não foi fornecida pelo outro lado ou não tem uma (é auto-assinada).
- O certificado raiz não está no banco de dados local de certificados raiz confiáveis.
-
O banco de dados local de certificados raiz confiáveis não foi fornecido e, portanto, não foi consultado pelo OpenSSL. Para fornecer explicitamente o caminho para os certificados, use a opção
-CApath
ou-CAfile
. Para o Debian um Ubuntu é por exemplo:-CApath /etc/ssl/certs/ -CAfile /etc/ssl/certs/ca-certificates.crt
resultando assim em
openssl s_client -connect example.com:443 -CApath /etc/ssl/certs/ openssl s_client -connect example.com:443 -CAfile /etc/ssl/certs/ca-certificates.crt
Este último precisa de mais informações. Existe um relatório de erros abertos para o OpenSSL no Ubuntu desde 2009:
Using -CApath seems to set -CAfile to the the default of /etc/ssl/certs/ca-certificates.crt.
Não importa o que você forneça como caminho por -CApath
, pode funcionar, porque o -CAfile
também está definido como seu valor padrão (que estava vazio anteriormente). Portanto, não dependa do comportamento padrão do OpenSSL na verificação de certificados por um banco de dados de certificados local, pode ser falso!