ssl新闻资讯

文档中心

CharlesSSL璇佷功濡備綍鍐呯疆鍒板畨鍗撶郴缁燂紵璇﹁В姝ラ涓庡畨鍏ㄩ闄?txt

时间 : 2025-09-27 15:43:05浏览量 : 3

2CharlesSSL璇佷功濡備綍鍐呯疆鍒板畨鍗撶郴缁燂紵璇﹁В姝ラ涓庡畨鍏ㄩ闄?txt

****

如果你是一名移动应用开发者或安全测试人员,可能经常需要抓包分析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