抓包定位業務首次響應為什麼需要等待幾十秒

  • 2019 年 12 月 10 日
  • 筆記

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系統會有問題,Android/Windows系統沒有出現。

2.2 用戶的業務架構梳理

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.2 HTTP/HTTPS報文分析,定位到客戶端訪問ocsp.sectigo.com無響應

Charles捕獲HTTP&HTTPS請求,客戶端get ocsp.sectigo.com域名,服務長時間沒有響應,如下圖:

2.3.4.2.png

2.3.4.3 通過公共DNS解析域名ocsp.sectigo.com獲得IP

2.3.4.3.png

2.3.3.4 IP連通性定位,中國大陸無法訪問 ocsp.sectigo.com 域名解析IP的80埠

2.3.4.4.png

2.3.3.5 IP連通性定位,中國香港可以訪問 ocsp.sectigo.com 域名解析IP的80埠

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 騰訊雲證書申請流程 https://cloud.tencent.com/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 配置手冊 https://cloud.tencent.com/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.2 CLR方案存在的問題:

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.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.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

2.2.png

02

2.2.png

03

2.2.png

04

2.2.png

05

2.2.png

06

2.2.png

07

2.2.png

08

2.2.png

09

2.2.png

10

2.2.png

11

2.2.png

12

2.2.png

IOS&MAC證書吊銷檢測機制說明