1. 程式人生 > 實用技巧 >新增Mitmproxy證書為安卓系統證書

新增Mitmproxy證書為安卓系統證書

來源:https://www.cnblogs.com/oboth-zl/p/13818981.html

Android證書分為“使用者證書”和“系統證書”兩種,在設定->安全->"檢視安全證書"列表中,可以看到“系統”和“使用者”兩個列表。使用者通過瀏覽器下載安裝或者通過WLAN高階設定安裝的證書均為使用者證書。

安裝為系統證書有什麼好處呢?

(1)安裝使用者證書必須要設定開機密碼,而且設定後就不能取消,除非先刪掉所有的使用者證書。如果安裝為系統證書就不需要設定開機密碼,自動化操作時更方便。

(2)Android 7以上版本APP預設不信任使用者證書,只信任系統證書,安裝為使用者證書,對APP的HTTPS抓包會失敗。安裝為全域性證書才能被所有APP信任,方可進行HTTPS抓包。

預設情況下,針對 Android 7.0+ (API level 24+) 的應用不再信任使用者或管理員新增的CA證書來進行安全連線。(之前我們其實是將安全證書安裝到安卓手機上作為使用者信任安全證書,新版本如果APP開啟了設定我們的代理請求會被認為是不安全的。) Android的系統證書的儲存位置是/system/etc/security/cacerts,證書檔案必須是PEM格式,而且檔案命名必須符合系統證書規範。
1、準備一臺已經root的手機 2、準備mitmproxy證書檔案 Windows 或者Linux 在mitmdump第一次執行會在使用者目錄生成對應的檔案。
#PEM或者DER格式均可。
#如果是PEM格式的:
oboth@DESKTOP-BUFOEB1:/mnt/c/Users/luoz/.mitmproxy$ openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.pem -noout
c8750f0d
# 如果是DER格式的:
oboth@DESKTOP-BUFOEB1:/mnt/c/Users/luoz/.mitmproxy$ openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer -noout
c8750f0d
#重新命名
cp mitmproxy-ca-cert.pem c8750f0d.0
#傳入手機
adb push c8750f0d.0 /sdcard
#獲取手機的root許可權
adb shell
su
#掛載系統目錄為可寫
mount -o rw,remount /
mv /sdcard/c8750f0d.0 /system/etc/security/cacerts
#修改證書許可權
chmod 644 /system/etc/security/cacerts/c8750f0d.0

至此,證書安裝成功!

現在我們可以在系統證書裡面找到mitmproxy證書了。手機連線mitmproxy代理進行抓包時系統也不會報”該證書來自非可信的授權中心“的錯誤了。

如果升級系統的話,可能需要重新拷入證書到系統目錄。可以考慮將該證書做成magisk模組,這樣升級系統後也無需重新拷入。