Ich versuche, Dateien von einer https-Site herunterzuladen und erhalte folgende Fehlermeldung:
OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Unable to establish SSL connection.
Wenn ich Blogs online lese, muss ich das Serverzertifikat und das Clientzertifikat angeben. Ich habe Schritte zum Herunterladen des Serverzertifikats gefunden, jedoch nicht das Clientzertifikat. Hat jemand einen vollständigen Satz von Schritten, um wget mit SSL zu verwenden? Ich habe auch die Option --no-check-certificate ausprobiert, aber das hat nicht funktioniert.
wget version: wget-1.13.4
openssl version: OpenSSL 1.0.1f 6 Jan 2014
versuchen Sie, alle Vortragsressourcen von der Website eines Kurses auf coursera.org herunterzuladen. Die URL würde also ungefähr so aussehen: https://class.coursera.org/matrix-002/lecture
Für den Online-Zugriff auf diese Webseite ist eine Formularauthentifizierung erforderlich. Sie sind nicht sicher, ob dies den Fehler verursacht.
Es funktioniert von hier aus mit derselben OpenSSL-Version, jedoch mit einer neueren Version von wget (1.15). Wenn Sie das Änderungsprotokoll betrachten, gibt es folgende signifikante Änderung in Bezug auf Ihr Problem:
1.14: Unterstützung für die Angabe des TLS-Servernamens hinzufügen.
Beachten Sie, dass diese Site kein SNI erfordert. Aber www.coursera.org
erfordert es . Und wenn Sie wget mit -v --debug
aufrufen würden (wie ich es in meinem Kommentar ausdrücklich empfohlen habe!), Werden Sie Folgendes sehen:
$ 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.
Der Fehler tritt also tatsächlich mit www.coursera.org
auf und der Grund dafür ist die fehlende Unterstützung für SNI. Sie müssen Ihre Version von wget aktualisieren.
Ich war in SLES12 und für mich funktionierte es nach dem Upgrade auf wget 1.14 mit --secure-protocol = TLSv1.2 und mit --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
Grundsätzlich verwendet OpenSSL SSLv3, und die Site, auf die Sie zugreifen, unterstützt dieses Protokoll nicht.
Aktualisieren Sie einfach Ihr Wget:
Sudo apt-get install wget
Wenn es bereits ein anderes sicheres Protokoll unterstützt, fügen Sie es einfach als Argument hinzu:
wget https://example.com --secure-protocol=PROTOCOL_v1
Ich hatte dieses Problem auf Ubuntu 12.04.3 LTS (weit über EOL hinaus, ich weiß es ...) und bin damit umgekommen:
Sudo apt-get update && Sudo apt-get install ca-certificates
Eine Alternative ist das Ersetzen von "https" durch "http" in der URL, die Sie herunterladen möchten, um nur die SSL-Verbindung zu umgehen. Nicht die sicherste Lösung, aber das hat in meinem Fall funktioniert.
Sie haben wahrscheinlich eine alte Version von Wget. Ich empfehle die Installation von wget mit Chocolatey , dem Paketmanager für Windows. Dies sollte Ihnen eine aktuellere Version (wenn nicht die aktuellste) geben.
Führen Sie diesen Befehl nach der Installation von Chocolatey (als Administrator) aus:
choco install wget