Android證書分為“用戶證書”和“系統證書”兩種,在設置->安全->"查看安全證書"列表中,可以看到“系統”和“用戶”兩個列表。用戶通過瀏覽器下載安裝或者通過WLAN高級設置安裝的證書均為用戶證書。
安裝為系統證書有什么好處呢?
(1)安裝用戶證書必須要設置開機密碼,而且設置后就不能取消,除非先刪掉所有的用戶證書。如果安裝為系統證書就不需要設置開機密碼,自動化操作時更方便。
(2)Android 7以上版本APP默認不信任用戶證書,只信任系統證書,安裝為用戶證書,對APP的HTTPS抓包會失敗。安裝為全局證書才能被所有APP信任,方可進行HTTPS抓包。
Android的系統證書的存儲位置是/system/etc/security/cacerts,證書文件必須是PEM格式,而且文件命名必須符合系統證書規范。
1、准備一台已經
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模塊,這樣升級系統后也無需重新拷入。