前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >抓包定位业务首次响应为什么需要等待几十秒

抓包定位业务首次响应为什么需要等待几十秒

原创
作者头像
Hunter
修改2020-03-16 10:51:08
5.5K1
修改2020-03-16 10:51:08
举报

1 本次案例IOS APP使用HTTPS协议打开业务超过几十秒根因

序号

内容

1

证书的CA OCSP Server IP,中国大陆无法访问,中国香港可以访问。

2

客户端网络从中国大陆调整到中国香港,访问慢的场景消失。

3

根因 基于以上测试结果,中国大陆使用HTTPS协议访问业务出现慢的情况,因CA OCSP Server IP地址被限制,客户端长时间等待服务器端的响应导致。

4

解决方案请查询下文 4根治解决方案 & 5临时规避方案。

5

IOS&MAC证书吊销检测机制,请查询参考文献12。

2 问题定位过程

2.1 背景描述

序号

内容

1

2019年11月28日,XXX有限公司向腾讯云报障,大量用户使用APP访问腾讯云服务器承载的业务,打开首页需要几十秒。

2

客户端网络:包含移动,联通,电信4G和WIFI场景下均有问题。

3

客户端:只有IOS/MACOS系统会有问题,安卓/Windows系统没有出现。

2.2 用户的业务架构梳理

2.2.png
2.2.png

序号

名称

内容

1

客户设备

苹果手机IOS和苹果电脑MACOS

2

客户网络

移动网络4G和固网wifi(联通,电信,移动)

3

负载均衡

客户端访问负载均衡为TCP 443

4

服务器端

服务器端Nginx & PHP-Fpm

2.3 问题定位

2.3.1 定位问题是否是负载均衡引起:

2.3.1.1 客户端越过负载均衡,直接访问服务器,客户端访问业务慢场景依然存在。

2.3.1.2 结论,测试得出问题与负载均衡没有关系。

2.3.2 定位问题是否同CVM内的动态和静态服务程序有关:

2.3.2.1 单独访问动态资源和静态资源,均出现慢的场景。

2.3.2.2 结论,访问业务慢同服务器动态和静态服务程序没有关系。

2.3.3 定位问题是否和服务器使用协议有关:

2.3.3.1 HTTP访问业务,客户端访问慢的场景消失。

2.3.3.2 HTTPS访问业务,客户端访问慢的场景再次出现。

2.3.3.3 测试定位到业务慢与HTTPS协议有关。

2.3.3.4 HTTP与HTTPS最大差异在SSL/TLS。

2.3.4 抓包分析HTTP/HTTPS:

2.3.4.1 抓包环境准备如下:

2.3.4.1.1 客户端使用苹果手机

2.3.4.1.2 电脑上安装抓包工具Charles

2.3.4.1.3 客户端和抓包工具在同一个局域网

2.3.4.1.4 苹果手机内配置代理,手机所有访问互联网的请求全部经过电脑上的Charles抓包工具。

拓扑如下:

2.3.4.1.png
2.3.4.1.png

2.3.4.2 HTTP/HTTPS报文分析,定位到客户端访问ocsp.sectigo.com无响应

Charles捕获HTTP&HTTPS请求,客户端get ocsp.sectigo.com域名,服务长时间没有响应,如下图:

2.3.4.2.png
2.3.4.2.png

2.3.4.3 通过公共DNS解析域名ocsp.sectigo.com获得IP

2.3.4.3.png
2.3.4.3.png

2.3.3.4 IP连通性定位,中国大陆无法访问 ocsp.sectigo.com 域名解析IP的80端口

2.3.4.4.png
2.3.4.4.png

2.3.3.5 IP连通性定位,中国香港可以访问 ocsp.sectigo.com 域名解析IP的80端口

2.3.4.5.png
2.3.4.5.png

2.3.3.6 客户端访问业务慢定位结论

1 因苹果设备验证证书的特性,客户端发起OCSP校验。

2 中国大陆网络无法访问OCSP Server,OCSP校验得不到响应,长时间等待校验结果,导致业务打开页面慢。

3 OCSP Server 中国大陆为什么无法访问?经测试得出IP被国际互联网限制导致中国大陆无法访问。

3 根治解决方案

3.1 证书替换,使用Symantec/GeoTrust/TrustAsia/GlobalSign上述厂商的证书。

3.1.1 上述厂商的CA OCSP Server ,基于地域的不同部署了多套,中国大陆和海外同时部署,可以规避中国大陆无法访问的问题。

3.1.2 腾讯云证书申请流程 /document/product/214/6989

`备注:

如何确定证书OCSP Server部署多套?

用 myssl.com 网站检测你的域名,获取证书OCSP域名,检测前确定你的网站已经完成HTTPS部署。

用 www.17ce.com 检测OCSP域名,如果全球解析出来的IP地址有多个证明,OCSP Server 有多套。`

3.2 服务器端开启OCSPs(Stapling)

3.2.1 证书有效性校验直接在Server端校验,无需客户端到OCSP Server校验证书是否有效。

3.2.2 OCSPs 配置手册 /developer/article/1153244

4 临时规避方案

4.1 HTTPS协议临时切换至HTTP协议,规避方案优劣势:

4.1.1 优势:

保障用户可以正常访问业务。

业务可以正常稳定持续运行。

4.1.2 弊端:

协议切换至HTTP存在一定的安全性。

4.1.3 规避方案应用

将优势弊端提供给用户,用户评估确定是否使用。

5 证书吊销状态检测方式

5.1 证书吊销状态常规检测方式 CRL & OCSP

5.1.1 CRL

CRL(Certificate revocation list 证书吊销列表)是一个已经被吊销的数字证书的名单,这些在证书吊销列表中的证书不再会受到信任。CA会定期更新发布撤销证书列表,RFC 5280: Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile。

CRL分布在公共可用的存储库中,浏览器可以在验证证书时获取并查阅CA的最新CRL。该方法的一个缺陷是撤销的时间粒度限于CRL发布周期。只有在计划更新所有当前发布的CRL之后,才会通知浏览器撤销。

各家签名CA厂商的策略不一样,有的是几小时,有的是几天,甚至几周。

5.1.1.1 CRL 检测流程如下图:

5.1.1.1.png
5.1.1.1.png

5.1.1.2 CRL方案存在的问题:

1 浏览器校验证书状态时,会获取CRL,如果CRL量多或尺寸较大的话下载可能存在延迟。

2 证书吊销周期更新存在延迟,因各家签名CA厂商的策略不一样,有的是几小时,有的是几天,甚至几周。

3 解决方案如5.1.2 OCSP

***

5.1.2 OCSP

OCSP(Online Certificate Status Protocol)是一个用于获取X.509数字证书撤销状态的协议,在RCF 6960中定义,作为证书吊销列表的替代品解决公开密钥基础建设(PKI)中使用证书吊销列表而带来的多个问题。OCSP协议数据传输过程中使用ASN.1编码,并通常创建在HTTP协议上。

RFC2560X.509 Internet Public Key Infrastructure Online Certificate Status Protocol– OCSP的描述中,浏览器从在线OCSP服务器(也称为OCSP Response Server)请求证书的撤销状态,OCSP Server予以响应。这种方法避免CRL更新延迟问题。

5.1.2.1 OCSP 检测流程如下图:

5.1.2.1.png
5.1.2.1.png

5.1.2.2 OCSP方案存在的问题:

1 浏览器发起HTTPS请求,证书的有效性需要浏览器连接OCSP Server进行验证,有的浏览器所在网络与OCSP Server的网络并不是通畅的会有网络延迟,如果花费较长的网络传输时间,会严重影响用户访问业务体验。

2 在浏览器发送服务器HTTPS证书序号到OCSP Server时使用HTTP协议,将暴露用户的隐私,存在一定的安全性。

3 如果浏览器得不到OCSP Server响应会存在下列问题:

3.1 默认选择拒绝该证书信息,并且拒绝后续的HTTPS通讯,这个方式称之为Hard-fail,如果是hard-fail模式,浏览器对任何HTTPS服务器访问的先决条件都取决于OCSP Server,这将是一个致命的单点故障,对于具有资深架构设计经验的你来说,你会这么选择吗?

3.2 默认选择信任该证书,认为没有被吊销,那么这个方式称之为Soft-fail,如果是soft-fail模式,取不到OCSP Server的响应就忽略,要这个机制还有啥意义呢?

3.3 解决方案如5.1.3 OCSP Stapling

***

5.1.3 OCSP Stapling

OCSP装订,是TLS证书状态查询扩展,作为在线证书状态协议的替代方法对X.509证书状态进行查询,服务器在TLS握手时发送事先缓存的OCSP响应,用户只要验证该响应的时效性而不用再向数字证书认证机构(CA)发送请求,可以加快握手速度。

5.1.3.1 OCSPs 检测流程如下图:

5.1.3.1.png
5.1.3.1.png

5.1.3.2 OCSPs 方案存在的问题:

1 WEB Server 会定期去 OCSP Server 更新证书状态缓存,一样会面临OCSP Server请求不到,或者没有响应的问题,WEB Server 给浏览器响应时,浏览器还会面临hard-fail,soft-fail选择问题。

2 解决方案如5.1.4 OCSP Must-Staple

5.1.4 OCSP Must-Staple

面对hard-fail、soft-fail的问题,各家浏览器厂商的态度都不一样。

同时不管浏览器如何选择,都不能满足广大域名用户的需求,那么不如把这个选择交给域名用户自己。

因此OCSP Must-Staple应然而生了,浏览器必须检测OCSP响应。域名证书创建时,自定义设定启用这个选项,将这个信息打入X.509 v3的扩展中,浏览器读取后,强制进行OCSP检测,走hard-fail模式。这个规范被起草在 X.509v3 Extension: OCSP Stapling Required draft-hallambaker-muststaple-00 ,不过暂未被采纳为RFC标准。

6 参考文献

01 https://developer.apple.com/library/archive/technotes/tn2232/index.html

02 https://wetest.qq.com/lab/view/274.html

03 http://www.pianshen.com/article/2982297320/

04 https://blog.myssl.com/myssl-v1-20-new-feature/

05 https://blog.myssl.com/myssl-term/#ocspstapling

06 https://www.digital-sign.com.cn/article/https-theory-tutorial

07 https://www.cnxct.com/browsers-and-certificate-validation/

08 https://juejin.im/post/59e74ebf518825038536f1da

09 https://blog.myssl.com/myssl-term/

10 https://www.zhihu.com/question/19578422

11 https://juejin.im/post/5b305758e51d4558ce5ea0d9#heading-16

12 https://www.sslchina.com/crypto-ssl-improvements-high-sierra-ios-11/ IOS&MAC证书吊销检测机制说明

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 本次案例IOS APP使用HTTPS协议打开业务超过几十秒根因
  • 2 问题定位过程
    • 2.1 背景描述
      • 2.2 用户的业务架构梳理
        • 2.3 问题定位
        • 3 根治解决方案
        • 4 临时规避方案
        • 5 证书吊销状态检测方式
        • 6 参考文献
        相关产品与服务
        负载均衡
        负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
        http://www.vxiaotou.com