文档中心
Charles鎶撳寘绁炲櫒鎵嬫妸鎵嬫暀浣犲畨瑁匟TTPS璇佷功锛堥檮璇︾粏姝ラ锛?txt
时间 : 2025-09-27 15:43:16浏览量 : 4

作为一名网络安全工程师,我经常需要使用Charles这类抓包工具来分析应用流量。但很多新手在使用Charles进行HTTPS抓包时,总会遇到"证书不受信任"的问题。今天我就用最通俗易懂的方式,结合具体案例,带大家彻底解决这个问题。
一、为什么需要安装Charles的HTTPS证书?
想象一下这样的场景:你正在测试公司新开发的APP,想查看它与服务器之间的通信内容。当你用Charles抓包时,发现所有HTTPS请求都显示为乱码或直接失败——这是因为现代应用普遍采用HTTPS加密传输。
真实案例:去年我们团队测试某金融APP时,发现支付接口返回异常。但因为没有正确配置Charles证书,无法解密HTTPS流量,导致排查工作停滞了2天。后来正确安装证书后,立即发现是签名参数编码问题。
二、各平台证书安装详细步骤
Windows系统安装指南
1. 获取证书文件:
- 打开Charles → Help → SSL Proxying → Save Charles Root Certificate
- 你会得到一个`.pem`或`.cer`文件(比如`charles-proxy-ssl-proxying-certificate.pem`)
2. 安装到系统信任库:
```powershell
可以通过命令行快速安装
certutil -addstore -f "ROOT" charles-proxy-ssl-proxying-certificate.pem
```
或者通过图形界面:
- 双击证书文件 → 选择"安装证书"
- 存储位置选"本地计算机" → 选择"将所有证书放入下列存储"
- 点击"浏览"选择"受信任的根证书颁发机构"
3. 验证是否成功:
打开Chrome访问https网站,地址栏应该不再显示安全警告
macOS系统特别说明
在Mac上会遇到更多权限问题:
```bash
需要先将PEM转换为CER格式
openssl x509 -inform PEM -in charles.pem -outform DER -out charles.cer
然后使用钥匙串访问导入
security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain charles.cer
```
常见坑点:MacOS Catalina之后需要在导入后手动设置始终信任:
1. 钥匙串访问中找到Charles证书
2. 展开信任设置
3. "使用此证书时"选择"始终信任"
Android设备配置要点
以华为Mate40 Pro为例:
1. 下载证书到手机:
chls.pro/ssl (在手机浏览器访问Charles提供的这个地址)
2. 修改证书名称:
必须将`.pem`改为`.crt`后缀才能识别
3. 特殊机型处理:
某些国产ROM需要额外步骤:
```shell
EMUI系统需要进入安全→加密与凭据→从存储设备安装
4. Android高版本限制:
针对Android 7+的系统应用,还需要在App的network_security_config.xml中添加我们的Charles证书:
```xml
iOS设备的特殊处理
最近帮客户调试iPad应用时发现的技巧:
1. 必须通过Safari下载:其他浏览器可能无法正确触发安装流程
2. 描述文件验证:iOS会提示"未验证的描述文件",需要在设置→通用→VPN与设备管理中手动信任
3. iOS13+的额外步骤:
```plaintext
设置 → 关于本机 → 证书信任设置 → 启用Charles根证书完全信任
三、高级配置技巧(工程师必备)
1. SSL代理白名单配置
避免所有流量都被解密带来的性能问题:
Proxy → SSL Proxying Settings → Add
Host: api.example.com
Port:443
2. Chrome特殊处理方案
新版Chrome有自己的证书库:
Windows下需要单独导入Chrome
certmgr.msc → Personal → Import Charles cert
Mac下需要通过终端强制刷新
sudo killall trustd && sudo killall mDNSResponderHelper && sudo killall mDNSResponder && sudo dscacheutil -flushcache && sudo killall Terminal;
3. Charles根CA备份策略
建议团队共享同一份CA:
```python
Python脚本自动分发示例(简化版)
import os, shutil, subprocess, sys, requests, tempfile, platform;
def install_cert():
if platform.system() == "Windows":
subprocess.run(["certutil", "-addstore", "-f", "ROOT", "charles.crt"])
elif platform.system() == "Darwin":
subprocess.run(["security", "add-trusted-cert", "-d", "-r", "trustRoot", "-k", "/Library/Keychains/System.keychain", "charles.crt"])
四、安全风险警示??(重点)
虽然Charles很强大,但必须注意:
1. 生产环境禁用原则
某电商公司曾发生事故:测试环境的Charles代理配置被误上传到生产服务器,导致所有支付请求被中间人截获。
2.法律风险提示
在未经授权的情况下对他人应用进行HTTPS解密可能涉及法律问题。去年某安全研究员就因擅自解密公司内部通讯而被起诉。
建议的工作流程应该是:
?获取书面授权→?在隔离测试环境操作→?及时清理痕迹
五、排查指南(收藏备用)
当遇到问题时可以这样检查:
1?? Charles是否开启SSL代理?(Proxy→SSL Proxying Settings)
2?? 目标域名是否在包含列表?
3?? 客户端时间是否正确?(证书有效期校验)
4?? iOS是否启用了完全信任?
5?? Android是否配置了networkSecurityConfig?
6?? Windows是否更新了受信任的根存储?
记住这个口诀:"一开二配三时间,四信五安六更新"
希望这篇结合实战经验的文章能帮你彻底搞定Charles HTTPS抓包问题!如果还有疑问欢迎留言讨论~
TAG:charles怎么安装https的证书,charles下载证书,下载charles证书的网址进不去,charles安装步骤,charles的安装和使用