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.
Russell Davis
fonte

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.

Shnatsel
fonte
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.

DH4
fonte
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
cguenther
fonte
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
Russell Davis
fonte
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
Alexey Soloviev
fonte
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;)

Pete
fonte
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

Denis Bakharev
fonte
-2

Apenas faça

apt-get install ca-certificate
tekintian
fonte
-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.

Saiful
fonte
Isto não está relacionado com Cygwin
Synthead 8/16