CURL和SSL在特定网站上失败

我不能curl在CentOS 6.2服务器上下载https://www.sicdm.caixa.gov.br/cadmut/login_internet_form.do

命令curl -v -k -3 https://www.sicdm.caixa.gov.br/cadmut/login_internet_form.do产生:

 * About to connect() to www.sicdm.caixa.gov.br port 443 (#0) * Trying 200.201.173.93... connected * Connected to www.sicdm.caixa.gov.br (200.201.173.93) port 443 (#0) * Initializing NSS with certpath: sql:/etc/pki/nssdb * warning: ignoring value of ssl.verifyhost * skipping SSL peer certificate verification * NSS error -5938 * Closing connection #0 * SSL connect error curl: (35) SSL connect error 

我到目前为止所尝试的是:

1)在其他供应商,我的Linux开发机器和我的队友机器上托pipe的服务器上发出非常相同的curl命令:页面下载就好了;

2)谷歌NSS error -5938 ,没有提供一个有用的提示。

3)沟渠curl和使用wget:将无法正常工作,因为远程服务器使用Transfer-Encoding:分块,哪个wget不能播放。

4)升级/降级/编译最新版本的Curl,NSS和OpenSSL:问题依然存在。

5)将问题报告给服务器提供商。 首先他们声称这是远程服务器证书的问题; 我怀疑是这样,因为我已经告诉curl忽略证书validation(-k标志)。

6)提取连接的tcpdump,其中发现“有趣”的东西(上面的捕获):

http://tinypic.com/r/jakm52/8

有很多传输错误,服务器对“客户端密钥交换”阶段的响应永远不会到达我们的服务器 – 即使AC​​K数据包也是如此! – 注意数据包46和47之间30秒的差距(即使防火墙被禁用,也会发生这种情况)

为了比较,curling paypal(较低的捕获)进行得很好。

7)重新分配服务器提供商,显示tcpdump结果。 他们对转储没有提出任何意见,但表示他们在networking上的其他服务器上尝试了命令,命令也以同样的方式失败。 尽pipe如此,他们仍然声称这个问题是远程服务器蹩脚的证书,以及我处理它的方式。

那么,我错过了什么?

PS:这里是一些版本号:

 curl -v 

curl 7.19.7(x86_64-redhat-linux-gnu)libcurl / 7.19.7 NSS / 3.16.2.3基本ECC zlib / 1.2.3 libidn / 1.18 libssh2 / 1.4.2协议:tftp ftp telnet dict ldap ldaps http文件https ftps scp sftp特性:GSS协商IDN IPv6大文件NTLM SSL libz

 uname -a 

Linux [redacted hostname] 2.6.32-220.23.1.el6.x86_64#1 SMP Mon Jun 18 18:58:52 BST 2012 x86_64 x86_64 x86_64 GNU / Linux