1.TLS/SSL 握手基本流程
图片来自网络。
2.案例分享
2.1 CFCA 证书的历史问题
背景
一位客户申请了CFCA为其生产环境颁发的证书。证书配置正确,相关域名启用HTTPS后,通过测试发现他们的客户端App在较低版本手机(iOS 10.0,Android 6.0)上无法连接相关站点。
客户端发现控制台会看到证书无效(证书无效或证书未知)的错误消息。
故障排除
一开始工程师不知道客户的证书是哪个机构出的,问题出在哪里。对于这类问题,一般需要客户端网络包进行进一步的分析判断。因此,客户被安排在受影响的设备上执行问题重现和客户端数据包捕获操作。
获取网络数据包后,首先确认客户端连接失败的直接原因是TLS握手过程异常终止,如下图:
检查加密的告警内容,错误信息为0x020x2E。根据TLS 1.2协议(RFC5246)的定义,这个错误是由certificate_unknown引客户端是什么意思啊起的。
继续查看证书的具体信息。根据服务器Hello帧中携带的证书信息可知,该证书是由中国金融认证中心(CFCA)颁发的。然后证书查询,根据证书信息中的授权信息访问(AIA)信息,确定中间CA和根CA的证书。确认证书颁发机构的根证书是CFCA EV ROOT。
回到有问题的手机设备(Android 5浅析数字经济的发展与未来1500字.1),查看系统内置的可信CA根证书列表,找不到CFCA EV根CA证书;在正浅析爱情三部曲常连接的手机上,可以找到CA的根证书,默认设置为“信任”。
参考CFCA证书的相关说明。该机构的证书只能在iOS 10.1和Android 6.0及以上版本中进行rooted。
总结证书编号
从上面的分浅析清明上河图析可以看出,这个问题的根本原因解决打呼噜的小妙招是较低版本的客户端设备没有内置CFCA的CA根证书。因此,基本解决方案包括:
替换由其他CA机构颁发的证书,以确保在特定设备上默认信任他们的CA根证书。
在受影响的设备上手动安装CA根证书和中间证书,并将其配置为受信任状态。
App预置CA根证书,通过客户端代码配置信任证书。
根据不同的业务场景选择证书编号查询入口合理的解决方案。
2证书编号.2 证书链信任模式引起的问题
背景错误反馈by送泥一条鱼
客户为灾难恢复添加了备份访问地址,启用了新域名,并配置了张全新证书。测解决问题最好的方法试显示,切换到备用地址时,Android客户端无法正常连接,解决师证书未知);报告了错误。iOS客户端运行正常。
故障排除
与2.1中解决催收最好的办法的问题类似,首先,问题再次出现,客户端在受影响的设备上抓取客户端是电脑还是手机数据包。
获取网络包后,确认客户端连接失败的直接原因是TLS握手过程异常终止。原因和2.1中的问题一样,是证书未知:证书编号