背景
- 新手机 旧电脑,使用Charles 4.6.3版本抓包时提醒Unknown;
- 首先排除了没有安装RootCer 和 开启SSL Proxying的问题;
- 确认iOS手机连接此IP:8888可以正常抓包;
解决思路
0. 配置PC/MacOS Root Cer
和普通博文介绍,配置Charles无异,此处略过。
1. 发现手机需要在本地安装CA证书后点击信任
换句话说直接让手机浏览器通过访问chls.pro/ssl下载证书自动安装不太可行,需要pc或者换个浏览器下载下来之后通过微信或者蓝牙的方式传给手机端。
然后在系统设置里(以三星为例,在“设置-生物识别和安全性-其他安全设置-从设备存储空间安装”)找到“从设备存储空间安装”,选择CA证书;然后找到上述文件安装之后才可以使证书生效。
2.Android 7.0用户自己安装的证书是不被app应用信任的
出于安全性考虑,防止charles这种做接口逆向,监听数据;所以我们只能通过修改android 项目中的 network-security-config
来允许Charles抓取自家app的接口数据。
具体来说,第一步先在res/xml下新建一个网络管理配置文件允许在debug环境下信任user目录下的证书;
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
第二步,在清单文件AndroidManifest.xml中指定配置文件
<application
android:name=".ui.VSApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_config"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.DEFAULT"
tools:replace="android:theme">