TLS版本降级的问题排查

问题背景

小程序发布要求必须符合ATS规范,这就要求发布的服务必须使用https,并且服务器协议不低于tls1.2,否则小程序会访问异常。

排查步骤

首先排查反向代理,以nginx为例

查看ssl版本,以及是否支持tls1.2,具体步骤如下:

进入linux服务器,执行命令:openssl version,一般openssl版本在1.0.1以上的会支持tls1.2,当前版本如下,肯定支持,继续往下查;

OpenSSL 1.0.2k-fips  26 Jan 2017

进入nginx的安装目录,执行命令./sbin/nginx -V,可以看到nginx编译时使用的openssl版本是1.0.1g,竟然不是用的系统默认版本,不过也是支持tls1.2的,继续往下查;

nginx version: openresty/1.13.6.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) 
built with OpenSSL 1.0.1g 7 Apr 2014
TLS SNI support enabled
...

打开nginx配置文件nginx.conf,查看是否配置支持tls1.2协议,以下配置项添加了tls1.2的支持;

ssl_protocols TLSv1.2 TLSv1.1;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;

测试当前服务器是否支持TLS1.2协议,执行命令:openssl s_client -connect localhost:443 -tls1_2,响应了CONNECTED(00000003),就表示成功;

CONNECTED(00000003)
depth=2 C = CN, O = China Financial Certification Authority, CN = CFCA EV ROOT
verify return:1
depth=1 C = CN, O = China Financial Certification Authority, CN = CFCA OV OCA
verify return:1
...

通过以上检查,基本确定nginx目前看来是支持tls1.2的。

其次排查网络中其他安全应用,以WAF防火墙为例

页面验证tls协议版本,通过测试发现,通过外网接入的请求,使用的都是tls1.0版本,通过内网接入的请求,使用的都是tls1.2版本,这说明,服务器的tls协议是支持tls1.2的,只是在网络链路中被降级为tls1.0,忽然想到,在给https域名添加防护的时候,被要求安装证书,基本上很大概率问题出在这里;

来到防火墙的配置页面,经过一顿查,发现防火墙在配置https证书的时候,会默认只给ssl3.0和tls1.0两个协议版本,问题就在这,将tls1.2添加到支持列表中,保存;

再次验证,ATS验证通过。

总结

在确保服务器的tls协议版本正确的情况下,考虑网络链路中其他节点协议降级的可能,本次折腾了很久,最后发现是防火墙的协议版本配置过低导致,经验分享给大家,以免走弯路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值