2015-06-13 10 views
15

Ich versuche, Dateien von einer https Website zum Download bereit und halten Sie die folgende Störung zu erhalten:wget ssl Alarm Handshake-Fehler

OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure 
Unable to establish SSL connection. 

Von Blogs Online-Lesen entnehme ich, ich habe das Server-Zertifikat und das Client-Zertifikat zur Verfügung zu stellen. Ich habe Schritte gefunden, wie man das Server-Zertifikat, aber nicht das Client-Zertifikat herunterladen kann. Hat jemand eine vollständige Reihe von Schritten, um wget mit SSL zu verwenden? Ich habe auch die Option --no-check-certificate versucht, aber das hat nicht funktioniert.

wget Version: wget-1.13.4 openssl Version: OpenSSL 1.0.1f 6. Januar 2014

versuchen, alle von einem Kurs Homepage auf coursera.org Vortrag Ressourcen zum Download bereit. So würde die URL in etwa so aussehen: https://class.coursera.org/matrix-002/lecture

Zugriff auf diese Webseite online erfordert Formularauthentifizierung, nicht sicher, ob das den Fehler verursacht.

+0

Dies könnte alles sein, wie nicht unterstütztes Protokoll, Verschlüsselungen, SNI ..... In der Regel hängt dies jedoch nicht mit der Validierung des Serverzertifikats zusammen. Fügen Sie weitere Details wie die Version von wget, die Version von openssl und die Site, auf die Sie zugreifen möchten, hinzu. Verwende auch 'wget -v --debug'. –

+0

Gelöschter Kommentar – sotn

Antwort

21

Es funktioniert von hier mit der gleichen OpenSSL-Version, aber eine neuere Version von wget (1.15). Mit Blick auf das Changelog gibt es die folgende wesentliche Änderung in Bezug auf Ihr Problem:

1.14: Add support for TLS Server Name Indication.

Beachten Sie, dass diese Website SNI nicht erfordert. Aber www.coursera.org erfordert es. Und wenn Sie wget mit -v --debug nennen würde (wie ich ausdrücklich in meinem Kommentar empfohlen haben!) Werden Sie 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. 

So ist der Fehler passiert eigentlich mit www.coursera.org und der Grund, Unterstützung für SNI fehlt. Sie müssen Ihre Version von wget aktualisieren.

+1

Wird geben, dass ein Schuss und aktualisieren. – sotn

+0

Nie daran gedacht, wget zu aktualisieren. Danke für den Tipp! –

+0

Wenn wir also als Benutzer an einem RHEL 6-Server arbeiten und keine Möglichkeit haben, * irgendein * Paket zu aktualisieren, wie können wir ein solches Problem beheben? – Vitor

0

Grundsätzlich verwendet Ihr OpenSSL SSLv3 und die Site, auf die Sie zugreifen, unterstützt dieses Protokoll nicht.

aktualisieren Sie Ihre wget:

sudo apt-get install wget

Oder, wenn es bereits ein anderes sicheres Protokoll unterstützt, fügen Sie ihn einfach als Argument:

wget https://example.com --secure-protocol=PROTOCOL_v1

0

ich in SLES12 war und für mich Es funktionierte nach dem Upgrade auf wget 1.14 mit --secure-protocol = TLSv1.2 und --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