J'essaie de télécharger des fichiers depuis un site https et continue de recevoir l'erreur suivante:
OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Unable to establish SSL connection.
En lisant des blogs en ligne, je suppose que je dois fournir le cert du serveur et le cert du client. J'ai trouvé des étapes sur la façon de télécharger le cert du serveur mais pas le cert du client. Quelqu'un a-t-il un ensemble complet d'étapes à suivre pour utiliser wget avec SSL? J'ai aussi essayé l'option --no-check-certificate mais cela n'a pas fonctionné.
wget version: wget-1.13.4
openssl version: OpenSSL 1.0.1f 6 Jan 2014
essayer de télécharger toutes les ressources de cours à partir de la page Web d'un cours sur coursera.org. Ainsi, l'URL ressemblerait à quelque chose comme ceci: https://class.coursera.org/matrix-002/lecture
L'accès à cette page Web en ligne nécessite une authentification de formulaire, ne sachant pas si cela est à l'origine de l'échec.
Cela fonctionne à partir d'ici avec la même version OpenSSL, mais une version plus récente de wget (1.15). En regardant le Changelog, il y a le changement significatif suivant concernant votre problème:
1.14: Ajout du support pour l'indication du nom du serveur TLS.
Notez que ce site ne nécessite pas de SNI. Mais www.coursera.org
en a besoin . Et si vous appelez wget avec -v --debug
(comme je l'ai explicitement recommandé dans mon commentaire!), Vous verrez:
$ wget https://class.coursera.org
...
HTTP request sent, awaiting response...
HTTP/1.1 302 Found
...
Location: https://www.coursera.org/ [following]
...
Connecting to www.coursera.org (www.coursera.org)|54.230.46.78|:443... connected.
OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Unable to establish SSL connection.
Donc, l'erreur se produit réellement avec www.coursera.org
et la raison pour laquelle le support de SNI est manquant. Vous devez mettre à jour votre version de wget.
J'étais dans SLES12 et pour moi, cela fonctionnait après la mise à niveau vers wget 1.14, avec --secure-protocol = TLSv1.2 et avec --auth-no-challenge.
wget --no-check-certificate --secure-protocol=TLSv1.2 --user=satul --password=xxx --auth-no-challenge -v --debug https://jenkins-server/artifact/build.x86_64.tgz
En gros, votre OpenSSL utilise SSLv3 et le site auquel vous accédez n’est pas compatible avec ce protocole.
Il suffit de mettre à jour votre wget:
Sudo apt-get install wget
Ou s'il supporte déjà un autre protocole sécurisé, ajoutez-le simplement comme argument:
wget https://example.com --secure-protocol=PROTOCOL_v1
J'avais ce problème sur Ubuntu 12.04.3 LTS (bien au-delà de EOL, je sais ...) et je l'ai contourné avec:
Sudo apt-get update && Sudo apt-get install ca-certificates
Une alternative consiste à remplacer "https" par "http" dans l'URL que vous essayez de télécharger pour contourner simplement la connexion SSL. Pas la solution la plus sûre, mais cela a fonctionné dans mon cas.
Vous avez probablement une ancienne version de wget. Je suggère d'installer wget en utilisant Chocolatey , le gestionnaire de paquets pour Windows. Cela devrait vous donner une version plus récente (sinon la dernière).
Exécutez cette commande après avoir installé Chocolatey (en tant qu'administrateur):
choco install wget