文档中心
CharlesSSL璇佷功濡備綍鍐呯疆鍒板畨鍗撶郴缁燂紵璇﹁В姝ラ涓庡畨鍏ㄩ闄?txt
时间 : 2025-09-27 15:43:05浏览量 : 3

****
如果你是一名移动应用开发者或安全测试人员,可能经常需要抓包分析HTTPS流量。而Charles作为一款流行的抓包工具,它的核心原理是“中间人攻击”(MITM)——通过让设备信任Charles的根证书,解密并查看加密流量。但在安卓高版本系统中(尤其是Android 7.0+),系统默认不再信任用户安装的证书,导致抓包失败。这时候就需要将Charles的SSL证书内置到安卓系统级信任库中。
一、为什么需要内置证书?安卓系统的安全机制
安卓从7.0开始引入“网络安全配置”(Network Security Configuration),目的是防止恶意应用偷偷安装CA证书监听用户流量。例如:
- 用户级证书:通过「设置」安装的证书(如Charles默认导出的`charles-proxy-ssl-proxying-certificate.pem`)只能用于浏览器或部分APP。
- 系统级证书:只有内置到`/system/etc/security/cacerts/`目录下的证书才能被所有APP信任(需Root权限)。
?? 举例:如果你测试一个银行APP,它可能强制启用“仅信任系统证书”,此时用户级Charles证书无效,必须走系统级安装。
二、具体操作步骤(需Root权限)
步骤1:获取Charles的PEM格式证书
1. 在电脑端打开Charles → `Help → SSL Proxying → Save Charles Root Certificate…`,保存为`.pem`文件(如`charles.pem`)。
2. 重命名为特定格式(安卓要求):
```bash
openssl x509 -inform PEM -in charles.pem -outform DER -out charles.der
mv charles.der `openssl x509 -inform DER -in charles.der -noout -subject_hash_old`.0
```
最终得到一个类似`9a5ba575.0`的文件名(哈希值前缀 + `.0`后缀)。
步骤2:推送证书到安卓系统目录
1. 通过ADB推送文件到设备(需Root):
adb root
adb remount
adb push 9a5ba575.0 /system/etc/security/cacerts/
2. 修改文件权限为644:
adb shell chmod 644 /system/etc/security/cacerts/9a5ba575.0
步骤3:重启生效
```bash
adb reboot
```
重启后,打开任意APP(如Chrome),访问HTTPS网站应能看到Charles成功解密流量。
三、潜在风险与注意事项
1. Root风险:修改系统分区可能导致设备变砖或失去保修。建议使用模拟器(如Genymotion)或测试机操作。
2. 安全漏洞示例:如果攻击者替换了系统CA证书,可窃取所有APP的登录凭证。因此高版本安卓进一步限制了对`/system`的写权限。
3. 替代方案:对于非Root设备,可尝试以下方法:
- 在APP的代码中强制信任用户证书(需修改APK)。
- 使用Frida等工具动态Hook SSL校验逻辑。
四、与扩展场景
内置Charles证书是安全测试中的常见需求,但需权衡便利性与风险。其他类似场景包括:
- 企业监控设备:公司可能预装自己的CA证书到员工手机,以便审查流量(需明确告知隐私政策)。
- 渗透测试项目:在授权范围内对金融类APP进行HTTPS中间人测试时必备此操作。
如果你遇到问题,欢迎留言讨论!??
TAG:charles ssl证书内置到安卓系统,charles手机端证书,charles,安卓charles ssl证书下载,charles ssl ca certificate installatio