Comment corriger les erreurs de certificat lors de l'exécution de wget sur une URL HTTPS dans Cygwin?


164

Par exemple, l'exécution wget https://www.dropbox.comentraîne les erreurs suivantes:

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

Réponses:


131

En regardant les solutions hacky actuelles ici, je sens que je dois décrire une solution appropriée après tout.

Tout d'abord, vous devez installer le package cygwin ca-certificatesvia setup.exe de Cygwin pour obtenir les certificats.

N'utilisez PAS curl ou des hacks similaires pour télécharger des certificats (comme le conseille une réponse voisine) car cela n'est fondamentalement pas sécurisé et peut compromettre le système.

Deuxièmement, vous devez indiquer à wget où se trouvent vos certificats, car il ne les récupère pas par défaut dans l'environnement Cygwin. Si vous pouvez le faire soit avec le paramètre de ligne de commande --ca-directory=/usr/ssl/certs(idéal pour les scripts shell), soit en ajoutant ca_directory = /usr/ssl/certsau ~/.wgetrcfichier.

Vous pouvez également résoudre ce problème en exécutant ln -sT /usr/ssl /etc/sslcomme indiqué dans une autre réponse, mais cela ne fonctionnera que si vous avez un accès administratif au système. D'autres solutions que j'ai décrites n'exigent pas cela.


5
Merci pour cette réponse, et surtout pour le rappel concernant le fichier ~ / .wgetrc. En tant qu'utilisateur MacPorts, mes certificats se trouvent dans / opt / local / etc / openssl, un fait que j'espère que quelqu'un trouvera utile.
Bryce Anderson

3
Et pour fink, ils se trouvent dans /sw/etc/ssl/certs/ca-bundle.crt qui fait partie du ca-bundlepackage - comme décrit ici .
jhfrontz

Je ne sais pas si c'est une faute de frappe mais cela a ln -s /etc/ssl /usr/sslfonctionné pour moi.
zkent

240

Si vous ne vous souciez pas de vérifier la validité du certificat, ajoutez simplement l' --no-check-certificateoption sur la ligne de commande wget. Cela a bien fonctionné pour moi.

REMARQUE: cela vous ouvre aux attaques man-in-the-middle (MitM) et n'est pas recommandé pour tout ce qui vous préoccupe de la sécurité.


1
Cela a fonctionné pour moi. Les autres solutions concernant l'installation et la mise à jour des certificats ne l'ont pas résolu. Dans mon cas particulier, il n'y a aucun problème de sécurité.
marlar le

103

Si le problème est qu'une autorité de certification racine connue est manquante et que vous utilisez ubuntu ou debian, vous pouvez résoudre le problème avec cette seule ligne:

sudo apt-get install ca-certificates

1
apt-get est sur cygwin? apt-get est sur redgat? ;)
Denis Chenu

5
ca-certificate était déjà installé sur mon ordinateur. L'exécution a update-ca-certificatesrésolu le problème.
Tomás Fox

Cela a également fonctionné sur mon Synology DS215j avec le chroot Debian.
microspino

@fox update-ca-certificatesest une commande ubuntu, non disponible dans Debian.
Devy

@Devy Cela a réellement fonctionné sur mon Raspberry Pi exécutant Debian Wheezy
Luis Lobo Borobia

13

Tout d'abord, les certificats SSL doivent être installés. Instructions (basées sur 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

Ce qui précède est suffisant pour corriger curl, mais wgetnécessite un lien symbolique supplémentaire:

ln -sT /usr/ssl /etc/ssl

6
N'est-ce pas dangereux d'installer des autorités de certification racine à partir d'un site Web aléatoire, en particulier avec haxx dans le nom?
Chloe

6
@Chloe curl.haxx.se qui est le site de développement de cURL. Des gens assez dignes de confiance.
ylluminate le

comment le réparer sans boucle?
Mark Lakata

1
omfg le lien symbolique était ce que j'ai manqué ... cherché 30min pour un correctif 1 ligne> <
Populus

4
C'est piraté à plusieurs niveaux. Tout d'abord, vous n'avez pas besoin de télécharger les certificats manuellement car il existe un package Cygwin pour celui appelé "ca-certificates". Deuxièmement, la liaison symbolique ne fonctionnera que si vous avez un accès administratif au système ou si vous avez installé cygwin pour votre compte utilisateur uniquement, ce qui n'est pas toujours le cas, donc le code n'est pas fiable.
Shnatsel

10

Peut-être que cela aidera:

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

1
Encore une: cette situation est également possible si vous utilisez Kaspersky AntiVirus ou le même logiciel (par défaut, il remplace le certificat SSL vérifié normal du site par le sien) - vous pouvez donc désactiver la vérification du trafic SSL dans Antivirus soft.
Alexey Soloviev

4
apt-get install ca-certificates 

Le sfait la différence;)


Il n'y a pas apt-getde cygwin, donc cela ne fonctionne pas.
jlh

1

J'ai le même problème et je l'ai résolu en désactivant temporairement mon antivirus (Kaspersky Free 18.0.0.405). Cet antivirus dispose d'un module d'interception HTTPS qui signe automatiquement tous les certificats qu'il trouve dans les réponses HTTPS.

Wget de Cygwin ne sait rien sur le certificat racine AV, donc quand il trouve que le certificat de ce site Web a été signé avec un certificat de non-confiance, il imprime cette erreur.

Pour résoudre ce problème de manière permanente sans désactiver AV, vous devez copier le certificat racine AV du magasin de certificats Windows vers un /etc/pki/ca-trust/source/anchorsfichier .pem (encodage base64) et exécuterupdate-ca-trust



-4

Si vous utilisez Windows, accédez simplement au panneau de configuration, cliquez sur les mises à jour automatiques, puis sur le lien du site Web Windows Update. Suivez simplement les étapes. Au moins cela fonctionne pour moi, plus aucun problème de certificats, c'est-à-dire chaque fois que je vais sur https://www.dropbox.com comme avant.


Ceci n'est pas lié à Cygwin
Synthead
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.