關於安卓7.0及以上的Https請求抓包問題android:networkSecurityConfig
阿新 • • 發佈:2018-11-07
Android 7.0(API 級別 24)及更高版本預設只承認系統CA,所以預設是安全的,不需要配置。如果想要系統承認使用者自己安裝的CA,則修改配置(比如除錯時會需要抓包)。
面向 Android 6.0(API 級別 23)及更低版本應用的預設配置如下所示,這段配置的意思是,承認系統CA和使用者自己安裝的CA,但這是一個預設配置,目前在6.0及以前好像都不起作用,即使去掉了user,依然承認自己安裝的CA,不能確保100%防止https抓包
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> <certificates src="user" /> </trust-anchors> </base-config> </network-security-config>
面向 Android 7.0(API 級別 24)及更高版本應用的預設配置如下所示,即只承認系統CA,如果要承認自己安裝的CA,像上述6.0配置那樣加上user即可
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> </trust-anchors> </base-config> </network-security-config>
實際操作:
1、在res/xml/下建立network_security_config.xml檔案
2、檔案寫入上述配置
3、在清單檔案的application標籤下,引入此配置
<application android:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
官方地址:https://developer.android.com/training/articles/security-config#ConfigCustom