Não é possível obter cURL ou wget para validar alguns certificados SSL

3

Percebi que nosso verificador de links, que usa cURL, falha cada vez mais para validar certificados SSL. Estou tentando chegar ao fundo disso.

O

link , por exemplo, é exibido em todos os navegadores (IE 11, Firefox, Opera, Chrome) em minha máquina com Windows 7 , mas o cURL (e o wget) no meu CentOS 6 e Ubuntu 16.04 não podem validar o certificado.

Aqui está a saída detalhada do cURL do CentOS (Versão curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 )

* About to connect() to www.bgetem.de port 443 (#0)
*   Trying 193.104.3.166... connected
* Connected to www.bgetem.de (193.104.3.166) 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=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB'
* NSS error -8179
* Closing connection #0
* Peer certificate cannot be authenticated with known CA certificates

E o Ubuntu (versão curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3 ):

* found 173 certificates in /etc/ssl/certs/ca-certificates.crt
* found 695 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384
* server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
* Closing connection 0
curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

Alguma ideia do problema e como posso corrigi-lo?

    
por user2323470 12.04.2017 / 10:34

1 resposta

5

Como a mensagem de erro já explica: o certificado de servidores não pode ser autenticado com os certificados de CA conhecidos do CAfile: /etc/pki/tls/certs/ca-bundle.crt (pois o certificado do servidor é emitido por uma CA desconhecida para o seu sistema).

Duas razões bastante comuns para essa mensagem:

  • O certificado é realmente assinado por uma CA desconhecida (por exemplo, uma CA interna).
  • O certificado é assinado com um certificado de CA intermediário de uma das CAs conhecidas e o servidor remoto está configurado incorretamente no sentido de que não inclui esse certificado de CA intermediário como uma resposta da cadeia de CA.

Obrigado por incluir o nome de domínio: isso nos permite testar o servidor SSL e confirme: a cadeia CA está incompleta:

Comoadministradordesseservidor,vocêpode/devecorrigiroarquivoemcadeiaparaevitarasseçõesde"download extra" no caminho de certificação.

Se você não é o administrador desse servidor e deseja corrigir esse lado do cliente: faça o download desse certificado intermediário e adicione-o ao truststore local .

    
por 12.04.2017 / 10:52