針對近期iOS 10.3以上的系統charles抓https信任問題
前言
最近iPhone系統更新到ios 10.3后,在公司里用Charles抓包竟然出現了一些問題,https的請求都會失敗,提示錯誤信息為Failure SSLHandshake: Received fatal alert: unknown_ca 和You may need to configure your browser or application to trust the Charles Root Certificate. 然而之前任何問題都沒有,並且相關設置都正確:Mac上安裝了Charles的根證書,並且設置了始終信任,然后手機上也登錄了http://chls.pro/ssl安裝了描述文件,一切都按正常程序走的,但是錯誤始終無法解決.這里Charles的相關使用不做介紹,不會使用的請參考本文結尾處唐巧大大的博文.
相關環境
- Charles 4.0.2
- iPhone 6s iOS 10.3.1
原因
設置->通用->描述文件->charles proxy custom root certificate
雖然charles的根證書已經在安裝列表中顯示,但它是被關閉的。在iOS 10.3之前,當你將安裝一個自定義證書,iOS會默認信任,不需要進一步的設置。而iOS 10.3之后,安裝新的自定義證書默認是不受信任的。如果要信任已安裝的自定義證書,需要手動打開開關以信任證書。
解決
設置->通用->關於本機->證書信任設置-> 找到charles proxy custom root certificate然后信任該證書即可.

后記
問題雖小,但是很有必要普及一下.這個設置證書信任的開關界面隱藏的很深,是iOS 10.3之后出現的(貌似是,至少之前我沒見過).這個問題因此也只有在iOS 10.3的設備上才會出現,真是太意外了!因此作為iOS開發者,更新手機系統時,了解一下系統更新的相關內容也變得很有必要.