Como faço para corrigir erros de certificado ao executar o wget em um URL HTTPS no Cygwin?


164

Por exemplo, a execução wget https://www.dropbox.comresulta nos seguintes erros:

ERROR: The certificate of `www.dropbox.com' is not trusted.
ERROR: The certificate of `www.dropbox.com' hasn't got a known issuer.

Respostas:


131

Olhando para as soluções hacky atuais aqui, sinto que tenho que descrever uma solução adequada, afinal.

Primeiro, você precisa instalar o pacote cygwin ca-certificatesatravés do setup.exe do Cygwin para obter os certificados.

NÃO use hacks curl ou similares para baixar certificados (como conselhos de resposta vizinhos), pois isso é fundamentalmente inseguro e pode comprometer o sistema.

Segundo, você precisa dizer ao wget onde estão seus certificados, pois eles não os capturam por padrão no ambiente Cygwin. Se você puder fazer isso com o parâmetro de linha de comando --ca-directory=/usr/ssl/certs(melhor para scripts de shell) ou adicionando ca_directory = /usr/ssl/certsao ~/.wgetrcarquivo.

Você também pode corrigir isso executando ln -sT /usr/ssl /etc/sslconforme indicado em outra resposta, mas isso funcionará apenas se você tiver acesso administrativo ao sistema. Outras soluções que descrevi não exigem isso.


5
Obrigado por esta resposta, e especialmente pelo lembrete sobre o arquivo ~ / .wgetrc. Como usuário do MacPorts, meus documentos estão localizados em / opt / local / etc / openssl, fato que espero que alguém ache útil.
21715 Bryce Anderson #

3
E para o fink, eles estão em /sw/etc/ssl/certs/ca-bundle.crt, que faz parte do ca-bundlepacote - como descrito aqui .
Jhfrontz 22/10/2015

Não tenho certeza se é um erro de digitação, mas ln -s /etc/ssl /usr/sslfuncionou para mim.
zkent

240

Se você não se importa em verificar a validade do certificado, adicione a --no-check-certificateopção na linha de comando do wget. Isto funcionou bem para mim.

NOTA: Isso abre você para ataques do tipo man-in-the-middle (MitM) e não é recomendado para qualquer coisa em que você se preocupe com a segurança.


1
Isso funcionou para mim. As outras soluções relacionadas à instalação e atualização dos certificados não o resolveram. No meu caso particular, não há preocupações de segurança.
marlar 14/09/15

103

Se o problema é que uma CA raiz conhecida está ausente e quando você estiver usando o ubuntu ou debian, poderá resolver o problema com esta linha:

sudo apt-get install ca-certificates

1
O apt-get está no cygwin? apt-get está no redgat? ;)
Denis Chenu

5
ca-certificates já estava instalado no meu computador. Correr update-ca-certificatesresolveu o problema.
Tomás Fox

Isso funcionou também no meu Synology DS215j com o Debian chroot.
microspino

@fox update-ca-certificatesé um comando ubuntu, não disponível no debian.
Devy

@Devy Ele realmente trabalhou no meu debian correndo framboesa pi asmática
Luis Lobo Borobia

13

Primeiro, os certificados SSL precisam ser instalados. Instruções (com base em https://stackoverflow.com/a/4454754/278488 ):

pushd /usr/ssl/certs
curl http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
c_rehash

O acima é suficiente para corrigir curl, mas wgetrequer um link simbólico extra:

ln -sT /usr/ssl /etc/ssl

6
Não é inseguro instalar as autoridades de certificação raiz de um site aleatório, especialmente com haxx no nome?
Chloe

6
@Chloe curl.haxx.se que é o site de desenvolvimento de cURL. Gente bastante confiável.
ylluminate

como você corrige isso sem enrolar?
MarkLakata

1
omfg o link simbólico foi o que eu perdi ... procurei 30min por uma correção de 1 liner> <
Populus

4
Isso é hacky em vários níveis. Primeiro, você não precisa baixar os certificados manualmente, porque há um pacote Cygwin para o chamado "ca-certificates". Segundo, a ligação simbólica funcionará apenas se você tiver acesso administrativo ao sistema ou tiver instalado o cygwin apenas para sua conta de usuário, o que nem sempre é o caso, portanto, o código não é confiável.
Shnatsel 6/03/2013

10

Pode ser que isso ajude:

wget --no-check-certificate https://blah-blah.tld/path/filename

1
Mais uma: Esta situação também é possível se você estiver usando o Kaspersky AntiVirus ou o mesmo software (por padrão, ele está substituindo o certificado SSL verificado normal do site pelo próprio) - para que você possa desativar a verificação do tráfego SSL no software antivírus.
Alexey Soloviev

4
apt-get install ca-certificates 

O sfaz a diferença;)


Não há apt-getcygwin, então isso não funciona.
Jlh

1

Eu tenho o problema semelhante e o corrigi desativando temporariamente meu antivírus (Kaspersky Free 18.0.0.405). Esse AV possui um módulo de interceptação HTTPS que assina automaticamente todos os certificados encontrados nas respostas HTTPS.

O Wget da Cygwin não sabe nada sobre o certificado raiz AV, portanto, quando descobre que o certificado do site foi assinado com certificado não confiável, imprime esse erro.

Para corrigir isso permanentemente sem desativar o AV, você deve copiar o certificado raiz do AV do armazenamento de certificados do Windows para /etc/pki/ca-trust/source/anchorscomo arquivo .pem (codificação base64) e executarupdate-ca-trust



-4

Se você estiver usando o Windows, basta ir ao painel de controle, clique em atualizações automáticas e no link Site do Windows Update. Basta seguir o passo. Pelo menos isso funciona para mim, não há mais emissão de certificados, ou seja, sempre que vou a https://www.dropbox.com como antes.


Isto não está relacionado com Cygwin
Synthead 8/16
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.