1. 說明
從Android Q版本開始啃洋,已經(jīng)不能通過用戶導(dǎo)入burpsuite證書攔截App的請求,應(yīng)用App的請求默認(rèn)不再信任用戶安裝的證書惫东,除非另有說明莉给,否則默認(rèn)只信任系統(tǒng)證書。
2. 安裝系統(tǒng)級證書
在手機(jī)上查看系統(tǒng)證書: Settings -> Security -> Trusted Credentials
將手機(jī)root廉沮,但是目前大部分手機(jī)很難root
導(dǎo)出burpsuite證書颓遏,以DER格式導(dǎo)出證書
-
轉(zhuǎn)換證書格式,將der格式轉(zhuǎn)換為pem格式:
openssl x509 -inform DER -in cacert.der -out cacert.pem
-
Android 的受信任 CA 以特殊格式存儲在 / system/etc/security/cacerts滞时,需要將pem格式的證書保存為hash命名方式叁幢,以0結(jié)尾
openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1 >9a5ba575 mv cacert.pem 9a5ba575.0
-
將證書復(fù)制到設(shè)備,并修改權(quán)限
adb remount adb push 9a5ba575.0 /system/etc/security/cacerts/ adb reboot
重啟設(shè)備坪稽,WIFI設(shè)置代理即可訪問
3. 修改并重新打包APK
-
在源碼res目錄下新建xml目錄曼玩,增加network_security_config.xml文件
工程名/app/src/main/res/xml/network_security_config.xml
network_security_config.xml文件內(nèi)容為:<network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" overridePins="true" /> <certificates src="user" overridePins="true" /> </trust-anchors> </base-config> </network-security-config>
說明:certificates說明的src="system"表示信任系統(tǒng)的CA證書,src="user"表示信任用戶導(dǎo)入的CA證書
-
修改項目的AndroidManifest.xml文件窒百,在application中增加android:networkSecurityConfig="@xml/network_security_config"
<?xml version="1.0" encoding="utf-8"?> <manifest ... > <application android:networkSecurityConfig="@xml/network_security_config" ... > ... </application> </manifest>
說明:android:networkSecurityConfig的值指向的就是上一步創(chuàng)建的xml文件
- 重新打包APK黍判,導(dǎo)入CA證書