it-swarm.com.de

Es kann keine SSL-Verbindung unter "wget" unter Ubuntu 14.04 LTS hergestellt werden

Ich habe versucht, ein Image über Wget herunterzuladen, erhielt jedoch eine Fehlermeldung: Es konnte keine SSL-Verbindung hergestellt werden. 

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.

Mein Testfall:

  1. Mit Ubuntu 12.04.4 LTS (GNU/Linux 3.8.0-44-generic x86_64), GNU Wget 1.13.4, das auf Linux-GNU aufgebaut ist, konnte ich das Image Mit dem obigen Code herunterladen. Kein Fehler.
  2. Unter Verwendung von Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-generisch x86_64), GNU Wget 1.15, das auf Linux-GNU erstellt wurde, konnte ich das Image Nicht mithilfe des obigen Codes herunterladen.

Eine weitere Variable ist, dass www.website.com TLS 1.0 verwendet. Ich habe keine Ahnung, wie sich dies auf wget auswirkt. Wenn ich jedoch ein Bild von TLS 1.2-Websites erhalte, erhalte ich keine SSL-Verbindungsfehler aus beiden Testfällen.

Ist Ubuntu 14.04 oder Wget 1.15 nicht mit TLS 1.0-Websites kompatibel? Muss ich eine Bibliothek/Software installieren/herunterladen, um diese Verbindung zu ermöglichen?

14
xanderlopez

... im Moment passiert dies nur auf der Website, die ich teste. Ich kann es nicht hier posten, weil es vertraulich ist. 

Dann denke ich, dass dies eine der Sites ist, die nicht mit TLS1.2 kompatibel ist. Das openssl, wie es in 12.04 verwendet wird, verwendet TLS1.2 auf der Clientseite nicht, während es mit 14.04 TLS1.2 verwendet, was den Unterschied erklären könnte. Um dies zu umgehen, verwenden Sie --secure-protocol=TLSv1. Wenn dies nicht hilft, prüfen Sie, ob Sie mit openssl s_client -connect ... (wahrscheinlich nicht) und mit openssl s_client -tls1 -no_tls1_1, -no_tls1_2 ... auf die Site zugreifen können.

Bitte beachten Sie, dass dies andere Ursachen haben kann, aber dies ist die wahrscheinlichste und ohne Zugriff auf die Website ist alles nur Spekulation.

Das angenommene Problem im Detail: Normalerweise verwenden Clients den am besten kompatiblen Handshake, um auf einen Server zuzugreifen. Dies ist der SSLv23-Handshake, der mit älteren SSL-Versionen kompatibel ist, kündigt jedoch die beste TLS-Version an, die der Client unterstützt, sodass der Server die beste Version auswählen kann. In diesem Fall würde wget TLS1.2 ankündigen. Es gibt jedoch einige defekte Server, die nie davon ausgegangen sind, dass es eines Tages so etwas wie TLS1.2 geben würde und den Handshake ablehnen, wenn der Client die Unterstützung für diese heiße neue Version (von 2008!) Ankündigt, anstatt nur mit der besten Version des Servers zu antworten unterstützt. Um auf diese defekten Server zuzugreifen, muss der Client lügen und behaupten, dass er nur TLS1.0 als beste Version unterstützt. 

Ist Ubuntu 14.04 oder Wget 1.15 nicht mit TLS 1.0-Websites kompatibel? Muss ich eine Bibliothek/Software installieren/herunterladen, um diese Verbindung zu ermöglichen?

Das Problem ist der Server, nicht der Client. Die meisten Browser umgehen diese defekten Server, indem sie es mit einer niedrigeren Version wiederholen. Die meisten anderen Anwendungen schlagen dauerhaft fehl, wenn der erste Verbindungsversuch fehlschlägt, d. H. Sie werden nicht von selbst heruntergestuft, und eine andere Version muss durch anwendungsspezifische Einstellungen erzwungen werden.

14
Steffen Ullrich

sie müssen alte Version von wget verwenden, ich hatte das gleiche Problem. Ich habe wget 1.12.so verwendet, um dieses Problem zu lösen. Es gibt zwei Möglichkeiten: wget aktualisieren oder curl verwenden.

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

Wenn Sie dem Host vertrauen, fügen Sie entweder das gültige Zertifikat hinzu, geben Sie --no-check-certificate an oder fügen Sie Folgendes hinzu:

check_certificate = off

in deinen ~/.wgetrc.

In einigen seltenen Fällen kann Ihre Systemzeit nicht synchron sein, wodurch die Zertifikate ungültig werden.

2
kenorb

Obwohl dies fast sicher nicht das OP-Problem ist, können Sie auch Unable to establish SSL connection von wget erhalten, wenn Sie sich hinter einem Proxy befinden und die Umgebungsvariablen HTTP_PROXY und HTTPS_PROXY nicht richtig eingestellt haben. Stellen Sie sicher, dass HTTP_PROXY und HTTPS_PROXY so eingestellt sind, dass sie auf Ihren Proxy verweisen.

Dies ist eine häufige Situation, wenn Sie für ein großes Unternehmen arbeiten.

0