美文网首页
Android 7.0 https抓包与Android9.0 h

Android 7.0 https抓包与Android9.0 h

作者: R7_Perfect | 来源:发表于2019-09-28 15:11 被阅读0次

问题:Android7.0及以上https无法抓包

升级了 targetSdkVersion 到 28 后发现在 Android 7.0 以上机型 Charles 抓取 https 包时显示找不到证书

问题原因

Android 6.0 network配置文件

<!-- 默认允许所有明文通信 -->
<base-config cleartextTrafficPermitted="true">
    <trust-anchors>
        <!-- 信任系统预装 CA 证书 -->
        <certificates src="system" />
        <!-- 信任用户添加的 CA 证书,Charles 和 Fiddler 抓包工具安装的证书属于此类 -->
        <certificates src="user" />
    </trust-anchors>
</base-config>

Android 7.0 -8.1 network配置文件

<!-- 默认允许所有明文通信 -->
<base-config cleartextTrafficPermitted="true">
    <trust-anchors>
        <!-- 信任系统预装 CA 证书 -->
        <certificates src="system" />
    </trust-anchors>
</base-config>

Android 9.0 network配置文件

<!-- 默认禁止所有明文通信 -->
<base-config cleartextTrafficPermitted="false">
    <trust-anchors>
        <!-- 信任系统预装 CA 证书 -->
        <certificates src="system" />
    </trust-anchors>
</base-config>

解决

添加res/xml/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>

只在android:debuggable为true时才生效的配置

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <!-- 支持 Android 7.0 以上调试时,信任 Charles 和 Fiddler 等用户信任的证书 -->
    <debug-overrides>
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

Manifest中:

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config"
                    ... >
        ...
    </application>
</manifest>

Android 9.0允许部分 http 请求

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <!-- 支持 Android 9.0 以上使用部分域名时使用 http -->
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">sample.domain</domain>
    </domain-config>
    <!-- 支持 Android 7.0 以上调试时,信任 Charles 和 Fiddler 等用户信任的证书 -->
    <debug-overrides>
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

相关文章

网友评论

      本文标题:Android 7.0 https抓包与Android9.0 h

      本文链接:https://www.haomeiwen.com/subject/csrmyctx.html