上下文:
服务器:Debian 8.6
curl 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
将URL重建为:xxxxxxxxxx
在DNS缓存中找不到主机名
正在尝试XXXXXXX ...
已连接到xxxxxxxxxxxx(x.x.x.x)端口443(#0)
成功设置了证书验证位置:
CAfile:无
CApath:/ etc / ssl / certs
SSLv3,TLS握手,客户端问候(1):
与xxxxxxxxxx:443关联的未知SSL协议错误
关闭连接0
卷曲:(35)与xxxxxx:443连接时发生未知的SSL协议错误
其他信息:远程网站不支持安全重新协商(我使用openssl s_client -connect域名:443进行了检查)。
cURL似乎总是尝试使用SSLv3执行SSL握手,并且服务器立即拒绝连接而不执行任何重新协商。
案例2(确定)
当我尝试连接到确实支持网站的网站时,我可以通过curl使用命令行进行重新协商。
这是命令的完整输出:
root @ web1:〜#curl -v --tlsv1.2 XXXXXXX
将URL重建为: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域名:443进行了检查。)
cURL似乎总是尝试使用SSLv3执行SSL握手,然后服务器执行重新协商,并且curl接受新的ssl协议版本(tlsv1.2)。
根本原因似乎是curl忽略了--tlsv1.2选项还是我错了?
我已经将软件包更新为最新版本(不能选择Debian 9)。
有什么建议吗?
谢谢