Debian Wheezy 中的 OpenSSL 问题

Debian Wheezy 中的 OpenSSL 问题

我不知道到底发生了什么,但我注意到如果不添加额外的开关,curl 就无法获取安全页面。

~# curl -v https://api.dreamhost.com
* About to connect() to api.dreamhost.com port 443 (#0)
*   Trying 75.119.208.14...
* connected
* Connected to api.dreamhost.com (75.119.208.14) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
(hangs for a minute)
* Unknown SSL protocol error in connection to api.dreamhost.com:443
* Closing connection #0
curl: (35) Unknown SSL protocol error in connection to api.dreamhost.com:443

现在,当我添加 -1(强制 tlsv1)或 -3(强制 sslv3)时,curl 可以完美运行。问题是其他程序似乎也有类似的问题,比如 python 脚本。

当我尝试 openssl 时,它像 curl 一样挂起

openssl s_client  -connect api.dreamhost.com:443
CONNECTED(00000003)
(HANGS)

write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 320 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

如果我使用 -tls1_2,也会发生同样的情况,但如果我使用 -ssl3 开关,它就会起作用

附加数据:

OpenSSL> version
OpenSSL 1.0.1e 11 Feb 2013

有人知道如何修复这个问题,并使 curl 或 openssl 使用默认设置吗?我有另一台装有 Debian lenny 的机器,可以完美地运行这两个命令而无需任何切换。

谢谢!

—罗德里戈

答案1

如果您针对此网站运行SSLLabs 测试,你会发现它不能忍受长时间的握手,这个问题肯定会影响你的 OpenSSL 版本。

减少密码列表的大小应该会有所帮助,例如:

openssl s_client -cipher RSA -connect api.dreamhost.com:443

(您可以使用--ciphers选项curl。)

答案2

所以我继续向 Dreamhost 提交了一张票(基于上面 @Bruno 的分析),因为我遇到了同样的问题。花了几个星期,但他们确实解决了问题。如果是其他公司,他们可能会让我陷入技术支持地狱。

答案3

确保已ca-certificates正确安装该软件包。如果已安装,则可能是您意外删除了其文件,需要重新安装。

sudo apt-get install --reinstall ca-certificates

相关内容