web-dev-qa-db-fra.com

Impossible d'établir une connexion SSL sur wget sur Ubuntu 14.04 LTS

J'ai essayé de télécharger une image via wget mais j'ai eu une erreur: Impossible d'établir une connexion SSL. 

wget https://www.website.com/image.jpg
--2015-02-26 01:30:17--  https://www.website.com/image.jpg
Resolving www.website.com (www.website.com)... xx.xxx.xx.xx
Connecting to www.website.com (www.website.com)|xx.xxx.xx.xx|:443... connected.
Unable to establish SSL connection.

Mon cas de test:

  1. En utilisant Ubuntu 12.04.4 LTS (GNU/Linux 3.8.0-44-generic x86_64), GNU Wget 1.13.4 construit sur linux-gnu, j’ai pu télécharger l’image En utilisant le code ci-dessus. Pas d'erreur.
  2. Sous Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-x86_64 générique), GNU Wget 1.15 construit sur linux-gnu, je n’ai pas pu télécharger l’image En utilisant le code ci-dessus.

Une autre variable est que le site Web www.website.com utilise TLS 1.0. Je ne sais pas comment cela affecte wget. Mais si j'obtiens une image des sites Web TLS 1.2, je ne reçois aucune erreur de connexion SSL des deux cas de test.

Ubuntu 14.04 ou wget 1.15 ne sont-ils pas compatibles avec les sites Web TLS 1.0? Dois-je installer/télécharger une bibliothèque/un logiciel pour permettre cette connexion?

14
xanderlopez

... pour le moment, cela ne concerne que le site Web que je teste. Je ne peux pas le poster ici parce que c'est confidentiel. 

Ensuite, je suppose que l’un des sites est incompatible avec TLS1.2. L’openssl utilisé dans 12.04 n’utilise pas TLS1.2 du côté client, tandis que 14.04 utilise TLS1.2, ce qui pourrait expliquer la différence. Pour contourner, essayez d'utiliser explicitement --secure-protocol=TLSv1. Si cela ne vous aide pas, vérifiez si vous pouvez accéder au site avec openssl s_client -connect ... (probablement pas) et avec openssl s_client -tls1 -no_tls1_1, -no_tls1_2 ....

Veuillez noter que cela pourrait être d’autres causes, mais celle-ci est la plus probable et sans avoir accès au site, tout n’est que spéculation.

Le problème supposé en détail: Les clients utilisent généralement la négociation la plus compatible pour accéder à un serveur. Il s’agit de la liaison SSLv23 qui est compatible avec les anciennes versions de SSL mais annonce la meilleure version TLS prise en charge par le client, afin que le serveur puisse choisir la meilleure version. Dans ce cas, wget annoncerait TLS1.2. Mais il y a des serveurs cassés qui n'ont jamais supposé qu'un jour il y aurait quelque chose comme TLS1.2 et qui refusent la poignée de main si le client annonce le support de cette nouvelle version (à partir de 2008!) Au lieu de simplement répondre avec la meilleure version du serveur les soutiens. Pour accéder à ces serveurs cassés, le client doit mentir et prétendre qu'il ne prend en charge que TLS1.0 en tant que meilleure version. 

Ubuntu 14.04 ou wget 1.15 n'est-il pas compatible avec les sites Web TLS 1.0? Dois-je installer/télécharger une bibliothèque/un logiciel pour activer cette connexion?

Le problème est le serveur, pas le client . La plupart des navigateurs fonctionnent autour de ces serveurs cassés en réessayant avec une version inférieure. La plupart des autres applications échouent de manière permanente en cas d'échec de la première tentative de connexion, c'est-à-dire qu'elles ne sont pas rétrogradées par elles-mêmes et qu'il est nécessaire d'appliquer une autre version à l'aide de certains paramètres spécifiques à l'application.

14
Steffen Ullrich

vous devez utiliser l'ancienne version de wget j'avais le même problème. J'utilisais wget 1.12.so pour résoudre ce problème, il existe 2 façons: Mettez à jour wget ou utilisez curl

curl -LO 'https://example.com/filename.tar.gz'
6
ParasPatel

Si vous faites confiance à l'hôte, ajoutez le certificat valide, spécifiez --no-check-certificate ou ajoutez:

check_certificate = off

dans votre ~/.wgetrc.

Dans de rares cas, votre heure système pourrait être désynchronisée et donc invalider les certificats.

2
kenorb

Bien que ce soit presque certainement pas le problème des OP, vous pouvez également obtenir Unable to establish SSL connection de wget si vous êtes derrière un proxy et que les variables d’environnement HTTP_PROXY et HTTPS_PROXY ne sont pas correctement définies. Assurez-vous de définir HTTP_PROXY et HTTPS_PROXY pour qu'ils pointent vers votre proxy.

C'est une situation courante si vous travaillez pour une grande entreprise.

0
Matt Messersmith