无法从github wget,sslv3握手错误


10

我们有一个脚本可以从github下载mod安全,最近开始失败。服务器运行CentOS 6,但RHEL 6可能有相同的问题。输出为:

# wget https://github.com/downloads/SpiderLabs/ModSecurity/modsecurity-apache_2.7.1.tar.gz
--2014-07-22 18:49:46--  https://github.com/downloads/SpiderLabs/ModSecurity/modsecurity-apache_2.7.1.tar.gz
Resolving github.com... 192.30.252.129
Connecting to github.com|192.30.252.129|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://cloud.github.com/downloads/SpiderLabs/ModSecurity/modsecurity-apache_2.7.1.tar.gz [following]
--2014-07-22 18:49:47--  https://cloud.github.com/downloads/SpiderLabs/ModSecurity/modsecurity-apache_2.7.1.tar.gz
Resolving cloud.github.com... 54.230.99.219, 205.251.219.190, 54.230.97.212, ...
Connecting to cloud.github.com|54.230.99.219|:443... connected.
OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Unable to establish SSL connection.

关于如何解决或解决此问题的任何想法?


2
使用其他应用程序,例如curl
Rabin 2014年

1
更具体地说,无论是54.230.99.219还是我为cloud.github.com获得的几个(不同的)A都给s_client握手失败,而没有ServerNameIndication选项。serverfault.com/questions/560053/…说(几个月前)RedHat wget不执行SNI,但是curl可以。
dave_thompson_085

您很幸运接受我的回答
Anton Dozortsev 2014年

好吧,说实话,我希望@ dave_thompson_085或Rabin将其评论作为答案发表,因为我认为这是长期的解决方案,即使您的解决方法也很有效!
克里斯托弗

Answers:


2

如果我没记错的话,你是说这个回购。尝试获取URL形式Releases

这种情况对我有用:

$ wget https://github.com/SpiderLabs/ModSecurity/archive/v2.8.0.tar.gz

附言:尝试运行您的案例时,我也有相同的错误消息;

$ wget https://github.com/downloads/SpiderLabs/ModSecurity/modsecurity-apache_2.7.1.tar.gz

嗯,这个网址虽然没有md5 :(
Kristofer 2014年

raw.githubusercontent.com/$ {USER} / $ {REPO} /path/to/file.tar.gz
Maksim Kostromin

10

您可以使用以下curl命令下载它:

curl -LO https://github.com/downloads/SpiderLabs/ModSecurity/modsecurity-apache_2.7.1.tar.gz

5
curl -L -O是的更好替代wget,因为它遵循HTTP重定向(在此特别有用,因为Github希望将我指向其CDN)。
奇怪功能

此外,我在CentOS 6.5中遇到的一件事是curl支持SNI,wget但不支持SNI ,因此对于某些站点,wget有时即使错误运行,也会为错误的主机提供证书并导致证书失败curl
rakslice 2014年

7

由于SSLv3严重的安全问题,服务器端已禁用SSLv3加密握手。而且,您的wget客户端是一个过时的版本,仍然默认使用此SSLv3加密。您有2个选项:

  • 在wget前面使用--secure-protocol = TLSv1标志。 wget --secure-protocol=TLSv1
  • 安装用作默认TLSv1协议的wget的更新版本

5

您应该检查您的wget版本。

我对wget(<1.15)的旧版本有相同的问题。


2
看起来这应该是对问题的评论,而不是答案。
Danny Staple 2015年

0

至于解决方法,如果您信任主机,请尝试指定--no-check-certificate或添加:

check_certificate = off

放入您的~/.wgetrc(不推荐)。

在极少数情况下,这是由您的系统时间引起的,该时间可能不同步,因此会使以前工作的证书失效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.