马会东的博客

马会东的博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

背景:根据客服对用户信息的反馈,部分IOS启动app很慢甚至超时,而安卓并无异常。

排查步骤
1.查看nginx的错误日志和服务端的处理日志,并没有发现异常超时的记录;
2.通过还原用户使用场景,用户发送请求到服务器接收到请求,产生了6-10s的延迟,这个直接导致ios 触发原定的3s超时;
3.了解到用户并非出于网络较差环境,或者使用FQ软件,于是将问题定位到https验证;
4.因为ios为了促进app审查,使用了https来与服务器通信,而安卓则是跳过验证,这点坐实了https验证的问题。
解决思路
1.检查https证书是否过期,发现各项证书均在有效期内;

2.通过ssllab.com测试域名的各项指标,发现TLS只支持到v1.0-v1.2,v1.3并无支持,而v1.3在验证速度上比历史版本块,其中原因v1.3引入以下特性,速度有很大提升:

相比过去的的版本,引入了新的密钥协商机制 — PSK
支持 0-RTT 数据传输,在建立连接时节省了往返时间
废弃了 3DES、RC4、AES-CBC 等加密组件,废弃了 SHA1、MD5 等哈希算法
ServerHello 之后的所有握手消息采取了加密操作,可见明文大大减少
不再允许对加密报文进行压缩、不再允许双方发起重协商
DSA 证书不再允许在 TLS 1.3 中使用
3.开启OCSP(Online Certificate Status Protocal), 在nginx的server{}配置中增加以下配置

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/xxx.xxx.com/fullchain.pem;
resolver 8.8.8.8 8.8.4.4 1.1.1.1 valid=60s;
resolver_timeout 2s;
然后重启nginx,在https://www.ssllabs.com/ssltest/index.html 验证,OCSP stapling YES。
4.之后验证https速度和http差不多了

posted on 2020-07-16 11:22  马会东  阅读(1396)  评论(0编辑  收藏  举报