Não é possível verificar localmente a autoridade do emissor

16

Não consigo abrir nenhum URL https usando wget ou curl:

$ wget https://www.python.org
--2015-04-27 17:17:33--  https://www.python.org/
Resolving www.python.org (www.python.org)... 103.245.222.223
Connecting to www.python.org (www.python.org)|103.245.222.223|:443... connected.
ERROR: cannot verify www.python.org's certificate, issued by "/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA":
  Unable to locally verify the issuer's authority.
To connect to www.python.org insecurely, use '--no-check-certificate'.

$ curl https://www.python.org
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

Isso está usando o wget 1.12 e o curl 7.30.0 no CentOS 5.5. Parece que algo está errado com meu armazenamento de certificados local, mas não tenho idéia de como proceder a partir daqui. Alguma idéia?

Atualização: Após atualizar o pacote openssl de 0.9.8e-12.el5_4.6 para 0.9.8e-33.el5_11, agora há um erro diferente:

$ wget https://pypi.python.org
--2015-04-28 10:27:35--  https://pypi.python.org/
Resolving pypi.python.org (pypi.python.org)... 103.245.222.223
Connecting to pypi.python.org (pypi.python.org)|103.245.222.223|:443... connected.
ERROR: certificate common name "www.python.org" doesn't match requested host name "pypi.python.org".
To connect to pypi.python.org insecurely, use '--no-check-certificate'.
    
por aco 27.04.2015 / 09:24

6 respostas

4

O problema é a falta de suporte para Indicação do Nome do Servidor. Você precisa pelo menos de wget 1.14 ou curl 7.18.1 e você precisa de pelo menos OpenSSL 0.98f, de acordo com a Wikipedia:

link

    
por 19.08.2017 / 20:54
3

Eu estava tendo um erro semelhante com o link em uma imagem do docker (circleci / jdk8: 0.1.1),

No meu caso, a atualização dos certificados de autoridade de certificação solucionou o problema:

sudo apt-get install ca-certificates
    
por 23.05.2018 / 20:21
2

wget anterior a 1.14 não suporta Nome alternativo de assunto (SAN) *. O PyPI usa uma SAN como uma alternativa ao seu CN em seu certificado, e o wget está sufocando na incompatibilidade. A atualização do wget deve resolvê-lo.

* ou possivelmente indicação do nome do servidor (SNI) - não sei ao certo o que se aplica aqui.

Referências:

  • link
  • link
  • Outros, que vou listar quando tiver mais reputação!
por 15.06.2017 / 13:12
0

Atualize a hora no servidor. Um segundo pode causar esse problema!

Verifique com: date

Redhat / CentOS 6/7 yum -y install ntpdate; /usr/sbin/ntpdate -u pool.ntp.org

Ubuntu / Debian apt-get -y install ntpdate; /usr/sbin/ntpdate -u pool.ntp.org

    
por 04.04.2017 / 17:32
0

echo "check_certificate = off" > > ~ / .wgetrc

    
por 18.10.2018 / 07:55
-1

Solução 1:

openssl s_client -connect whateversite.com:443 -debug 

Pegue a chave do certificado e copie para /etc/ssl/certs .

$ wget https://www.python.org --ca-certificate=/etc/ssl/certsfile

Se você quiser ir de maneira insegura, tente a solução 2

Solução 2:

$ wget https://www.python.org --no-check-certificate

ou usando Curl

$ curl https://www.python.org --insecure
    
por 27.04.2015 / 11:53