wget ssl警报握手失败

时间:2015-06-13 10:56:58

标签: ssl https wget

我正在尝试从https网站下载文件并继续收到以下错误:

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

从在线阅读博客我收集到必须提供服务器证书和客户端证书。我找到了如何下载服务器证书而不是客户端证书的步骤。有没有人有一套完整的步骤来使用wget与SSL?我也尝试过--no-check-certificate选项但是没有用。

wget version: wget-1.13.4
openssl version: OpenSSL 1.0.1f 6 Jan 2014

尝试从coursera.org上的课程网页下载所有讲座资源。因此,URL看起来像这样:https://class.coursera.org/matrix-002/lecture

在线访问此网页需要表单身份验证,不确定是否导致失败。

7 个答案:

答案 0 :(得分:32)

它可以在这里使用相同的OpenSSL版本,但更新版本的wget(1.15)。查看更改日志,您的问题有以下重大变化:

  

1.14:添加对TLS服务器名称指示的支持。

请注意,此网站不需要SNI。但www.coursera.org需要它。 如果您使用-v --debug致电wget(正如我在评论中明确建议的那样!),您会看到:

$ 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.

因此错误实际上发生在www.coursera.org,原因是缺少对SNI的支持。您需要升级您的wget版本。

答案 1 :(得分:2)

我在SLES12,对我来说,它在升级到wget 1.14之后工作,使用--secure-protocol = TLSv1.2并使用--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

答案 2 :(得分:1)

我在Ubuntu 12.04.3 LTS上遇到了这个问题(远远超出了EOL,我知道......)并且用它来解决这个问题:

sudo apt-get update && sudo apt-get install ca-certificates

答案 3 :(得分:0)

基本上,您的OpenSSL使用SSLv3,而您访问的站点不支持该协议。

只需更新你的wget:

sudo apt-get install wget

或者,如果它已经支持另一个安全协议,只需将其添加为参数:

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

答案 4 :(得分:0)

另一种方法是更换" https"用" http"在您尝试下载的网址中,只是绕过SSL连接。不是最安全的解决方案,但这在我的案例中有效。

答案 5 :(得分:0)

您可能有旧版本的wget。我建议使用Chocolatey(Windows的程序包管理器)安装wget。这样应该可以为您提供最新版本(如果不是最新版本)。

在安装Chocolatey之后(以管理员身份)运行以下命令:

choco install wget

答案 6 :(得分:0)

以下用于从TLSv1.2网站下载文件的命令。

curl -v --tlsv1.2 https://example.com/filename.zip

成功了!