web-dev-qa-db-fra.com

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

Par exemple, l'exécution de wget https://www.dropbox.com entraî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.
149
Russell Davis

En regardant les solutions actuelles de hacky 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-certificates via le fichier setup.exe de Cygwin pour obtenir les certificats. 

N'utilisez PAS curl ou des méthodes similaires pour télécharger des certificats (comme conseils de réponse voisins) car c'est fondamentalement peu sûr et peut compromettre le système.

Deuxièmement, vous devez indiquer à wget où sont vos certificats, car il ne les récupère pas par défaut dans l'environnement Cygwin. Si vous pouvez le faire, utilisez le paramètre de ligne de commande --ca-directory=/usr/ssl/certs (idéal pour les scripts Shell) ou ajoutez ca_directory = /usr/ssl/certs au fichier ~/.wgetrc.

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

125
Shnatsel

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

REMARQUE: Ceci vous ouvre le champ des attaques de type "homme au milieu" (MitM) et n'est pas recommandé pour tout ce qui concerne la sécurité.

224
DH4

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 ligne:

Sudo apt-get install ca-certificates
90
cguenther

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 wget nécessite un lien symbolique supplémentaire:

ln -sT /usr/ssl /etc/ssl
13
Russell Davis

Peut-être que cela aidera: 

wget --no-check-certificate https://blah-blah.tld/path/filename
3
Alexey Soloviev
apt-get install ca-certificates 

La s fait la différence;)

2
Pete

J'ai le même problème et je l'ai corrigé en désactivant temporairement mon antivirus (Kaspersky Free 18.0.0.405). Ce module audiovisuel possède un module d'interception HTTPS qui signe automatiquement tous les certificats trouvés dans les réponses HTTPS.

Wget de Cygwin ne connaît rien du certificat racine AV. Ainsi, lorsqu'il découvre que le certificat de site Web a été signé avec un certificat non sécurisé, il affiche cette erreur. 

Pour résoudre ce problème de façon permanente sans désactiver AV, vous devez copier le certificat racine AV du magasin de certificats Windows dans /etc/pki/ca-trust/source/anchors en tant que fichier .pem (codage en base64) et exécuter update-ca-trust.

0
Denis Bakharev