我使用的是 Ubuntu 12.04,使用 vagrant 安装在 VirtualBox (Mac) 上。我没有使用任何代理服务器。
在我的公司网络中,当我尝试
curl -1vsS https://github.com/FGRibreau/doxx/archive/master.zip
我得到以下结果:
* About to connect() to github.com port 443 (#0)
* Trying 192.30.252.130... connected
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* Unknown SSL protocol error in connection to github.com:443
* Closing connection #0
curl: (35) Unknown SSL protocol error in connection to github.com:443
它卡在了 Client hello 上。我使用的其他工具(例如 npm、bower)也出现同样的问题
但如果我执行以下操作:
wget --secure-protocol=TLSv1 https://github.com/FGRibreau/doxx/archive/master.zip
我可以下载文件。这里的主要问题是,如果我在公司网络中,则只会遇到连接问题。如果我连接到其他网络(例如家庭、公共互联网接入等),则从未发生过上述问题。
在我通过强制所有连接使用 SSLv3 来解决这个问题之前,只有当客户端/服务器决定使用 TLS 时才会发生这个问题。
我认为这是因为最近出现 SSL 漏洞,人们开始禁用 SSLv3。
我可以做些什么来检查我的设置中存在什么问题,导致使用 TLS 进行 HTTPS 连接时出现问题?
[编辑] 如果我执行以下命令:
strace -o ./tmp.out curl -v -sS https://github.com/FGRibreau/doxx/archive/master.zip
tmp.out 太大,无法在此处粘贴,因此最后几行是:
write(3, "\26\3\1\0\337\1\0\0\333\3\2T`E\30\3006\315\336\220I\6|\v'!8cp*\206\332"..., 228) = 228
write(2, "*", 1) = 1
write(2, " ", 1) = 1
write(2, "SSLv3, TLS handshake, Client hel"..., 40) = 40
read(3, 0x9cdf3e0, 7) = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {10742, 580346821}) = 0
clock_gettime(CLOCK_MONOTONIC, {10742, 580375417}) = 0
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 299700) = ? ERESTART_RESTARTBLOCK (To be restarted)
--- SIGINT (Interrupt) @ 0 (0) ---
+++ killed by SIGINT +++
似乎正在等待服务器响应,但没有得到响应并因错误退出。
答案1
问题解决了,好像我访问的网站正在使用 Tor,而我们的网络防火墙正在丢弃任何与 Tor 相关的内容。
只需删除阻止 Tor 的防火墙规则即可。