Curl, lynx etc não aceitando certificado localmente, mas OK remotamente

1

Quando me conecto ao servidor da Web para visualizar um site por HTTPS, obtenho a bela coisa de EV verde na barra de endereço. Quando uso o curl localmente para conectar, ele reclama do certificado e morre.

Estou ciente de que posso pular a verificação do certificado, mas gostaria de corrigir o problema, pois há outras ocasiões em que esses certificados serão verificados localmente.

Meu arquivo hosts (no servidor) mapeia www.domain.com para 192.168.100.62. em que o Apache está escutando (confirmado fazendo uma cURL para o mesmo endereço via http):

root@web3:~# curl -v https://www.domain.com
* About to connect() to www.domain.com port 443 (#0)
*   Trying 192.168.100.62... connected
* Connected to www.domain.com (192.168.100.62) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* Peer's certificate issuer is not recognized: 'CN=Symantec Class 3 EV SSL CA - G3,OU=Symantec Trust Network,O=Symantec Corporation,C=US'
* NSS error -8179
* Closing connection #0
* Peer certificate cannot be authenticated with known CA certificates
curl: (60) Peer certificate cannot be authenticated with known CA certificates
More details here: http://curl.haxx.se/docs/sslcerts.html

Eu pesquisei o google um pouco, mas parece que não consigo encontrar muita coisa ... pode ser possível que meu bundle da CA raiz esteja desatualizado ou o curl em si seja muito antigo para se conectar, mas não tenho muita experiência com isso.

root@web3:~# curl --version
curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.18 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps scp sftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

cat / etc / redhat-release Servidor Red Hat Enterprise Linux versão 6.7 (Santiago)

Eu tentei adicionar o certificado raiz verisign usando a ferramenta update-ca-trust , mas isso também não tem impacto:

root@web3:anchors# pwd
/etc/pki/ca-trust/source/anchors
root@web3:anchors# ls
VeriSign-Class-3-Public-Primary-Certification-Authority-G3.crt
root@web3:anchors#  update-ca-trust
root@web3:anchors# curl... <snip> same error.

Estou com uma pequena perda sobre qual é o problema real. Os certificados são válidos apenas em IPs da Internet?

    
por John Hunt 10.08.2015 / 17:29

1 resposta

1

Corrigi o problema baixando o Symantec_Class_3_EV_SSL_CA_G3.crt e instalando-o:

wget http://symantec.tbs-certificats.com/Symantec_Class_3_EV_SSL_CA_G3.crt
cp Symantec_Class_3_EV_SSL_CA_G3.crt /etc/pki/ca-trust/source/anchors
update-ca-trust

O problema simplesmente desapareceu :) Não sei por que isso não está incluído por padrão no pacote raiz da CA.

    
por 10.08.2015 / 17:51