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(force tlsv1)或者-3(force 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机器,可以完美地运行这两个命令,无需任何开关。

谢谢!

-Rodrigo

如果你使用SSLLabstesting运行这个站点,你会发现它不能容忍长时间握手 ,这个问题肯定会影响你的OpenSSL版本。

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

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

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

所以我继续向Dreamhost提交一张票(基于上面对@Bruno的分析),因为我遇到了同样的问题。 它花了几个星期,但他们实际上修复它。 任何其他公司,他们可能会只是把我的技术支持地狱。

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

 sudo apt-get install --reinstall ca-certificates