语境:
服务器:Debian 8.6
卷曲7.38.0-4 deb8u11
libcurl3:amd64 7.38.0-4 deb8u11
openssl 1.0.1t-1 deb8u8
案例1(KO)
当我尝试连接到不支持的网站时通过命令行使用curl进行安全重新协商我总是收到此错误:
与xxxxx连接时出现未知的SSL协议错误
这是命令的完整输出:
curl -v --tlsv1.2 xxxxxxxxx
重建网址为:xxxxxxxxxx
在DNS缓存中找不到
主机名
试用XXXXXXX ......
已连接到xxxxxxxxxxxx(x.x.x.x)端口443(#0)
成功设置证书验证位置:
CAfile:无
CApath:/ etc / ssl / certs
SSLv3,TLS握手,客户端问候(1):
与xxxxxxxxxx相关的未知SSL协议错误:443
关闭连接0
curl:(35)与xxxxxx:443相关的未知SSL协议错误
附加信息:远程网站不支持安全重新协商(我使用openssl s_client -connect domainname:443查看) .
看起来curl总是尝试使用SSLv3执行SSL握手,服务器立即拒绝连接不执行任何重新协商 .
案例2(好的)
当我尝试连接到支持使用curl通过命令行进行安全重新协商的网站时,我能够连接 .
这是命令的完整输出:
root @ web1:〜#curl -v --tlsv1.2 XXXXXXX
重建网址为:XXXXXX
在DNS缓存中找不到
主机名
试用XXXXXXX ......
连接到XXXXXXXX(XXXXXXX)端口443(#0)
成功设置证书验证位置:
CAfile:无
CApath:/ etc / ssl / certs
SSLv3,TLS握手,客户端问候(1):
SSLv3,TLS握手,服务器问候(2):
SSLv3,TLS握手,CERT(11):
SSLv3,TLS握手,服务器完成(14):
SSLv3,TLS握手,客户端密钥交换(16):
SSLv3,TLS更改密码,客户端问候(1):
SSLv3,TLS握手,已完成(20):
SSLv3,TLS更改密码,客户端问候(1):
SSLv3,TLS握手,已完成(20):
使用TLSv1.2 / AES256-GCM-SHA384进行SSL连接
附加信息:远程网站支持安全重新协商(我使用openssl s_client -connect domainname:443查看) .
看起来curl总是尝试使用SSLv3执行SSL握手,然后服务器执行重新协商并且curl接受新的ssl协议版本(tlsv1.2) .
根本原因看起来curl忽略了选项--tlsv1.2或者我错了吗?
我已经将软件包更新到最新版本(Debian 9不是一个选项) .
有什么建议?
谢谢