Apesar de ler várias postagens de SO neste tópico ( por exemplo e por exemplo ), openssl s_client -showcerts -servername
baixa o certificado de âncora/raiz errado, enquanto meu navegador mostra o certificado de âncora/raiz correto.
# get the chain of certs
[root@server dir]# openssl s_client -connect www.google.com:443 -servername www.google.com -showcerts 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > chain.pem
[root@server dir]#
# save the chain's certs to files: cert.pem (client/leaf) cert1.pem cert2.pem
[root@server dir]# cat chain.pem | awk 'split_after == 1 {n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
[root@server dir]#
# verify fails
[root@server dir]# openssl verify -trusted cert2.pem -untrusted cert1.pem cert.pem
cert.pem: C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
error 2 at 2 depth lookup:unable to get issuer certificate
# verify succeeds
# openssl verify -trusted ANCHOR-FROM-BROWSER.PEM -untrusted cert1.pem cert.pem
cert.pem: OK
O Firefox diz corretamente que o PEM âncora/raiz do Google contém "AocvmM", mas o openssl não consegue encontrá-lo (BTW, mesmo comportamento no CentOS 7.4 e no Ubuntu 16.04.3 LTS):
[root@server dir]# openssl s_client -connect www.google.com:443 -showcerts -servername www.google.com 2>&1 < /dev/null | grep AocvmM
[root@server dir]#
Pergunta: Por que -showcerts não exibe o certificado âncora/raiz correto ? Dito de outra forma, qual certificado -showcerts está exibindo, se não for a âncora/raiz?
A lista de certificados incluídos no "pacote" (o arquivo com a cadeia de certificados) é decidida pelo servidor Web (provavelmente Apache) que atende a página. Se o s_client (ou o openssl em geral) recebe a lista correta e completa, não há nada sobre o qual o openssl tenha controle.
Você precisa do certificado raiz disponível neste site .
Copie o texto incluindo de
até
para um arquivo chamado
equifax.pem
Em seguida, verifique toda a cadeia:
Editar
Se o certificado equifax estiver no repositório de certificados ssl local padrão (/etc/ssl/certs/), isso também funcionará:
O fato de o certificado equifax estar ou não no diretório ssl certs é um problema separado. Você pode atualizá-lo.