把 charles,Fiddler 证书安装到安卓根目录,解决安卓微信 7.0 版本以后安装证书也无法抓包问题,需要 root
From:https://testerhome.com/topics/21956
OpenSSL :https://slproweb.com/products/Win32OpenSSL.html
谷歌在安卓7.0修改了安全策略,安卓系統(tǒng) 大于?7.0 時(shí),?應(yīng)用不在信任用戶安裝的證書文件。用戶添加的 CA 證書不能再用于安全連接,對(duì)于 https 傳輸?shù)臄?shù)據(jù)就抓取不到了,會(huì)顯示<unknown>。
解決方法
- 降級(jí) APP
- 降級(jí) 系統(tǒng)版本
- 將用戶證書偷渡成系統(tǒng)證書,需要有 root 權(quán)限。將 charles 的 CA 證書安裝進(jìn)系統(tǒng)信任的證書目錄下,這樣在開啟 charles 代理的時(shí)候,系統(tǒng)就會(huì)認(rèn)為CA證書安全,從而可以獲取 https 數(shù)據(jù)。
Fiddler 證書安裝到安卓根目錄
一臺(tái)已 root 過(guò)的手機(jī),開啟開發(fā)者選項(xiàng),然后連接電腦。
安卓系統(tǒng)證書跟 Fiddler 證書的格式不一樣,需要轉(zhuǎn)換。
1、安裝 OPENSSL【https://slproweb.com/products/Win32OpenSSL.html】。linux 好像默認(rèn)安裝的有,如果使用 linux 系統(tǒng),可以忽略這一步。
2、下載 fiddler 證書到電腦上
3、打開命令窗口,執(zhí)行以下命令,查看證書哈希信息:
openssl x509 -inform DER -subject_hash_old -in FiddlerRoot.cer安卓系統(tǒng)的安全證書在???/system/etc/security/cacerts/目錄下,進(jìn)入adb shell,打開目錄就能看到這些證書文件。
文件名是 Hash值 加 數(shù)字后綴。后綴名的數(shù)字是為了防止文件名沖突的,比如如果兩個(gè)證書算出的Hash值是一樣的話,那么一個(gè)證書的后綴名數(shù)字可以設(shè)置成0,而另一個(gè)證書的后綴名數(shù)字可以設(shè)置成1
4、轉(zhuǎn)換證書
openssl x509 -inform DER -in FiddlerRoot.cer -text > [哈希].05、用記事本編輯證書
? ? ? ? 將 -----BEGIN CERTIFICATE----- 到 -----END CERTIFICATE----- 的部分放到文件最前面
6、將證書放到手機(jī)的?/system/etc/security/cacerts/?下
執(zhí)行 adb 命令連接手機(jī),獲取權(quán)限,把文件夾掛載為讀寫模式,把文件復(fù)制到證書根目錄
adb root adb remount adb shell mount -o rw,remount /system adb push e5742ab9.0 /system/etc/security/cacerts重啟手機(jī),可以看到 Fiddler 的證書已經(jīng)變成系統(tǒng)證書了,接下來(lái)就可以愉快的抓包了
?
Charles 證書安裝到安卓根目錄
一臺(tái)已 root 過(guò)的手機(jī),開啟開發(fā)者選項(xiàng),然后連接電腦。
下載證書到電腦上
- 電腦端瀏覽器輸入 chls.pro/ssl 即可下載,
- 如果未下載也可以在 charles >> help >> SSL Proxying >>Save Charles Root Certificate 保存證書到本地文件夾
打開命令窗口執(zhí)行以下命令,查看證書信息:openssl x509 -subject_hash_old -in charles-ssl-proxying-certificate.pem
重命名證書:mv charles-ssl-proxying-certificate.pem e5742ab9.0
執(zhí)行 adb 命令連接手機(jī),獲取權(quán)限,把文件夾掛載為讀寫模式,把文件復(fù)制到證書根目錄
adb root adb remount adb shell mount -o rw,remount /system adb push e5742ab9.0 /system/etc/security/cacerts以上就 OK 了。如果不放心可以 cd 到對(duì)應(yīng)目錄,檢查文件是否存在,文件權(quán)限是否與其他證書一致。證書安裝 OK,其他代理選項(xiàng)正常配置即可
如果出現(xiàn) <hash>.0:Read-only file system 這個(gè)警告,這是因?yàn)?system 文件為只讀,需要將其掛載為可讀寫。一般的解決方法是:mount -o rw,remount /system?修改system讀寫權(quán)限,然后再進(jìn)行復(fù)制操作。如果修改了之后還是提示Read-only file system,還有方法
adb root adb disable-verity adb reboot #手機(jī)會(huì)重啟,不用關(guān)閉cmd窗口,手機(jī)可能需要拔掉數(shù)據(jù)寫重新連接 adb root adb shell? mount -o rw,remount /system? ? #再次進(jìn)行修改然后就可以進(jìn)行復(fù)制操作了。復(fù)制完之后輸入reboot 重啟
重啟之后,打開設(shè)置 ---> 更多設(shè)置 ---> 系統(tǒng)安全 ---> 信任的憑據(jù)中可以看到安裝的證書
然后通過(guò)設(shè)置 charles 代理就可以查看到 https 的數(shù)據(jù)了。?
總結(jié)
以上是生活随笔為你收集整理的把 charles,Fiddler 证书安装到安卓根目录,解决安卓微信 7.0 版本以后安装证书也无法抓包问题,需要 root的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: nohup 与 linux 程序后台执行
- 下一篇: pyppeteer:比 selenium