Android 7.0以上 无法抓取Https包解决办法

2020-02-19  本文已影响0人  徘徊0_

Android 官网:网络安全配置

近期升级了targetSdkVersion到28,发现无法抓取到https请求包,查看了一下,Google修改安全策略了

默认配置
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </base-config>
    
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
<base-config cleartextTrafficPermitted="false">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
分析&解决

6.0---> 7.0 可以发现,默认配置少了 <certificates src="user" /> 也就是不信任用户添加的CA证书(ps: 所以抓包工具请求Https包的时候会失败)。9.0 更严格,默认不信任用户添加的CA证书,还禁止了http明文请求

最简单的方式就是项目修改为使用 Android6.0的默认配置

1.修改targetSdkVersion = 23
2.新建 network_security_config.xml 文件,目录结构如下图:

image.png
3.network_security_config.xml 文件内容如下:
<?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>

4.将刚新建的xml文件添加到清单文件中,如下图:

image.png

附:仅在debug模式下允许抓包配置如下:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>
上一篇下一篇

猜你喜欢

热点阅读