手機屏幕在搬運共享尿檢機器的過程當中因公殉職,恰逢小米MIX2發佈,被勾引了,入手了第一部小米手機。html
chls.pro/ssl
getssl.crt
證書
選擇第二步驟獲取到的證書,會彈窗提示
沒有可安裝的證書。
,換個姿式再來一次。
chls.pro/ssl
charles-proxy-ssl-proxying-certificate.pem
證書姿式正確。
注:以上兩步驟能解決網頁的問題,不能解決 android7+ 而且 微信7+ 的證書信任問題android
最近微信由體驗版主動升級到了微信7.0,發現Charles代理請求的時候報錯了:shell
request:fail ssl hand shake error
究其原因是微信調整了以下安全證書策略:瀏覽器
策略 | 安卓版本 | 微信版本 | 是否能夠代理 |
---|---|---|---|
A | 7- | 任意版本 | 是 |
B | 7+ | 7- | 是 |
C | 7+ | 7+ | 否 |
爲何策略 C 不能代理了?
參考資料提到默認狀況下,針對 Android 7.0 (API level 24) 的應用再也不信任用戶或管理員添加的CA證書來進行安全鏈接。(以前咱們實際上是將安全證書安裝到安卓手機上做爲用戶信任安全證書,新版本若是APP開啓了設置咱們的代理請求會被認爲是不安全的。)安全
如何在安卓7.0以及以上版本代理?微信
準備一臺已經 root 的手機app
# 手機 root 方法參考各手機 root 教程,小米手機在 Windows 電腦下載[解鎖工具](//www.miui.com/unlock/index.html),開啓 fastboot 模式,手機端啓用 root 權限(注意備份好手機上的數據到電腦) # 以小米手機爲例來開啓 root 權限後設置 /system 目錄爲讀寫 # 以 root 權限執行 adb root # 解決目錄 read only 關鍵命令行 adb disable-verity # 重啓 adb reboot # 以 root 權限運行 adb root # 從新掛載 adb remount # 設置讀寫 adb shell mount -o rw,remount /system
準備 Charles 證書文件工具
# 如下執行命令都是以證書文件在當前目錄爲前提 # 獲取證書步驟 Help -> SSL Proxying -> Save Charles Root Certificate... # 計算 Certificate_Hash 命令 openssl x509 -subject_hash_old -in <Certificate_File> # 重命名 `<Certificate_File>` 爲 `<Certificate_Hash.0>` mv <Certificate_File> <Certificate_Hash.0>
安裝證書到安卓系統證書目錄 /system/etc/security/cacerts
ui
# 安裝命令 adb push <Certificate_Hash>.0 /system/etc/security/cacerts
啓用證書google
# 開啓步驟以小米新版本爲例(如參考圖倒數第二個即爲咱們安裝的 Charles 系統證書) 設置 > 更多設置 > 系統安全 > 加密與憑據 > 信任的憑據[系統]