Android 7.0 以上 Charles 和 Fiddler 无法抓取 HTTPS 包的解决方式

栏目: IOS · Android · 发布时间: 7年前

内容简介:最近升级了 targetSdkVersion 到 28 后发现在 Android 7.0 以上机型 Charles 抓取 https 包时显示找不到证书,但是 Android 6.0 机型还是可以正常抓包。原因是因为从 Android 7.0 开始,默认的网络安全性配置修改了,具体请阅读官方文档Android 6.0(API 23)及更低版本应用的默认网络安全性配置如下:而在 Android 7.0(API 24)及更高版本应用的默认网络安全性配置如下:

最近升级了 targetSdkVersion 到 28 后发现在 Android 7.0 以上机型 Charles 抓取 https 包时显示找不到证书,但是 Android 6.0 机型还是可以正常抓包。原因是因为从 Android 7.0 开始,默认的网络安全性配置修改了,具体请阅读官方文档 网络安全性配置 。

问题原因

Android 6.0(API 23)及更低版本应用的默认网络安全性配置如下:

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

而在 Android 7.0(API 24)及更高版本应用的默认网络安全性配置如下:

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

对比很容易发现,在 Android 7.0(API 24)及更高版本应用上,默认不再信任用户添加的 CA 证书,所以也就不再信任 Charles 和 Fiddler 抓包工具的证书,所以抓取 HTTPS 包时才会失败。

解决方式

所以解决该问题就需要应用信任 Charles 和 Fiddler 抓包工具的证书抓包工具即可。

最简单的解决方式是使用 Android 6.0 以下的网络安全性配置:

添加 res/xml/network_security_config.xml :

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-configcleartextTrafficPermitted="true">
        <trust-anchors>
            <certificatessrc="system"/>
            <certificatessrc="user"/>
        </trust-anchors>
    </base-config>
</network-security-config>

然后在清单文件中指向该文件:

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

这种解决方式有一个安全风险:正式版的应用会有被他人抓包的风险。

如何只在调试模式下允许抓包呢?

使用 <debug-overrides> 即可实现只在 android:debuggable 为 true 时才生效的配置:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificatessrc="system"/>
            <certificatessrc="user"/>
        </trust-anchors>
    </debug-overrides>
</network-security-config>

网上有些解决方式是将 Charles 和 Fiddler 的证书添加到 raw 文件夹下的方式也可以,但是繁琐了点。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

我看电商

我看电商

黄若 / 电子工业出版社 / 2013-6-1 / 39.00元

本书是作者近30年从事及电子商务管理的总结和分享。 近年来电商行业在中国迅猛发展,2012年网络市场规模达到13,000亿人民币,诞生了淘宝、天猫、京东、、凡客、唯品会……等一大批全新的网络公司,电子商务正在日益深入的影响着越来越多人的生活。同时,这个行业连年亏损,顾客服务良莠不齐,也广为人们所关注。作者从地面到电子商务,从跨国公司高管到管理民营企业,从开创天猫模式到带领上市,被业界称为中国......一起来看看 《我看电商》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试