這個(gè)問(wèn)題在 iOS 調(diào)試中反復(fù)出現(xiàn)。
很多人聽(tīng)到“HTTPS”“證書(shū)校驗(yàn)”“SSL Pinning”,第一反應(yīng)就是,是不是必須越獄?
這篇文章在不越獄設(shè)備上分別測(cè)試三種情況:
- 普通 HTTPS
- 啟用證書(shū)校驗(yàn)的 App
- 啟用雙向認(rèn)證的 App
環(huán)境:
- iPhone(未越獄)
- 一臺(tái) Windows + 一臺(tái) Mac
- 代理工具(Charles / Proxyman)
- 設(shè)備本機(jī)抓包工具 SniffMaster
一、代理抓包:不越獄的第一條路徑
先測(cè)試最基礎(chǔ)的方式:代理抓包。
操作步驟
- 啟動(dòng) Charles(或 Proxyman)
- 確認(rèn)代理端口正在監(jiān)聽(tīng)
- iPhone 與電腦連接同一 Wi-Fi
- 在 iPhone 的 Wi-Fi 設(shè)置中填寫(xiě)代理地址與端口
- 在手機(jī)上安裝并信任證書(shū)
- 用 Safari 打開(kāi)一個(gè) HTTPS 網(wǎng)站
如果 Safari 能完整顯示請(qǐng)求和響應(yīng),說(shuō)明:
- 代理路徑?jīng)]問(wèn)題
- HTTPS 解密生效
- 不需要越獄
二、普通 App 的 HTTPS 測(cè)試
在同樣的代理環(huán)境下,打開(kāi)一個(gè)普通測(cè)試 App。
結(jié)果:
- 請(qǐng)求可以出現(xiàn)在 Charles 中
- HTTPS 內(nèi)容可正常解密
- 請(qǐng)求體與響應(yīng)體完整
這一步可以確認(rèn)在未啟用額外安全校驗(yàn)的情況下,不越獄完全可以抓到 HTTPS。
三、遇到證書(shū)校驗(yàn)(SSL Pinning)
接下來(lái)測(cè)試一個(gè)啟用了證書(shū)校驗(yàn)的 App。
操作保持不變,只替換測(cè)試 App。
現(xiàn)象:
- App 提示網(wǎng)絡(luò)錯(cuò)誤
- Charles 中只出現(xiàn)握手失敗或無(wú)請(qǐng)求記錄
代理路徑仍然有效,Safari 仍然可以抓到數(shù)據(jù)。
說(shuō)明:
- 阻斷發(fā)生在 App 內(nèi)部
- 系統(tǒng)信任代理證書(shū)不代表 App 會(huì)信任
在這里繼續(xù)重復(fù)安裝證書(shū)不會(huì)改變結(jié)果。
四、是否必須越獄才能繼續(xù)?
不越獄依然有兩種路徑可以嘗試。
路徑一:分析握手層
可以通過(guò)底層抓包確認(rèn):
- 是否存在 TLS ClientHello
- 是否建立 TCP 連接
如果 TLS 握手存在,說(shuō)明流量確實(shí)發(fā)出,只是代理無(wú)法接管。
路徑二:設(shè)備本機(jī)抓包
這里切換抓包方式。
使用 SniffMaster 進(jìn)行設(shè)備本機(jī) HTTPS 抓包
SniffMaster 支持通過(guò) USB 在電腦上直接抓取 iOS 設(shè)備流量。
操作步驟
- 用 USB 將 iPhone 連接電腦
- 保持設(shè)備解鎖并點(diǎn)擊“信任此電腦”
- 啟動(dòng) SniffMaster
- 在設(shè)備列表中選擇對(duì)應(yīng) iPhone
- 按提示安裝驅(qū)動(dòng)與描述文件
- 進(jìn)入 HTTPS 暴力抓包模式
- 點(diǎn)擊開(kāi)始
- 觸發(fā) App 請(qǐng)求
沒(méi)有配置 Wi-Fi 代理,也沒(méi)有安裝代理證書(shū)。

五、證書(shū)校驗(yàn) App 的抓包結(jié)果
在設(shè)備抓包模式下測(cè)試同一個(gè)啟用證書(shū)校驗(yàn)的 App。
結(jié)果:
- 請(qǐng)求可以看到
- HTTPS 內(nèi)容顯示正常
- 未出現(xiàn)握手失敗
區(qū)別來(lái)自抓包場(chǎng)景。
代理模式依賴替換證書(shū),設(shè)備直接抓包不依賴中間人證書(shū)。
六、當(dāng)請(qǐng)求體為空時(shí)的判斷
如果抓到的 HTTPS 中:
- URL 可見(jiàn)
- Header 可見(jiàn)
- Body 為空
這與越獄無(wú)關(guān),而與簽名有關(guān)。
若測(cè)試的是 App Store 下載的應(yīng)用,需要:
- 獲取 IPA
- 使用 iOS 開(kāi)發(fā)證書(shū)重簽
- 重新安裝
- 再次抓包
完成后,請(qǐng)求體與響應(yīng)體可完整顯示。
七、雙向認(rèn)證(mTLS)的測(cè)試
在雙向認(rèn)證場(chǎng)景中:
- 代理抓包會(huì)在握手階段失敗
- 設(shè)備級(jí)抓包仍可觀察到 TLS 會(huì)話
關(guān)鍵點(diǎn)是抓包工具是否依賴代理替換證書(shū)