一、Charles中出现Encrypted的常见原因
目标站点/应用使用HTTPS协议,基于SSL/TLS加密传输数据,若未正确安装并信任Charles的根证书,工具无法完成解密,内容就会显示为Encrypted。
部分App额外启用了SSL Pinning(证书绑定)技术,即使安装了Charles根证书,应用也只会校验预置的服务器证书,拒绝代理生成的伪造证书,导致抓包数据始终处于加密状态。
二、基础解密配置流程
先完成基础配置尝试解密:安装并信任Charles的根证书,在SSL Proxying设置中添加对应域名和443端口,启用SSL代理解密功能。
1. PC端根证书快速安装
打开Charles,依次点击顶部菜单 Help → SSL Proxying → Install Charles Root Certificate 进入证书安装向导:
- Windows系统:选择「本地计算机」,将证书存储位置指定为「受信任的根证书颁发机构」,按提示完成导入,弹出安全警告时点击「是」确认。
- Mac系统:证书会自动导入钥匙串,找到刚安装的Charles证书,将信任级别设置为「始终信任」即可。
2. 根证书手动导入全平台方案
若快速安装未生效,可按以下步骤手动导出并配置:
先导出Charles根证书:打开Charles,依次点击顶部菜单 Help → SSL Proxying → Save Charles Root Certificate ,将证书保存为.pem或.cer格式的本地文件。
- Windows系统:按
Win+R输入mmc打开控制台,点击「文件 →添加/删除管理单元 」,选择「证书 」并添加,选择「本地计算机 」后确认;展开「证书 →受信任的根证书颁发机构 →证书 」,右键选择「所有任务 →导入 」,选中导出的证书文件,手动指定存储位置为「受信任的根证书颁发机构」,完成后重启Charles。 - macOS系统:双击导出的证书文件,自动打开「钥匙串访问」,将证书导入到「系统」钥匙串中;双击刚导入的Charles证书,展开「信任」选项,将所有选项设置为「始终信任」,输入系统密码确认。
- Android设备:将证书文件传到手机,进入「设置→安全→加密与凭据→安装证书」,选择「CA证书」,选中证书文件完成安装;高版本安卓系统需将证书移动到系统证书目录,才能让所有应用识别信任,安装完成后重启设备。
3. SSL代理核心配置
点击顶部菜单 Proxy → SSL Proxying Settings ,勾选「Enable SSL Proxying 」启用功能。
点击「Add 」按钮添加规则,Host 可填写*匹配所有域名、填写.example.com匹配某域名下所有子域名,或填写具体目标域名,Port 填写443 (HTTPS默认端口,非标准端口需填写对应端口号如8443)。
重启Charles使配置生效,此时常规HTTPS请求就能正常解密查看明文内容。
1.点击顶部菜单栏的 Proxy > SSL Proxying Settings...。
2.在弹出的窗口中,确保勾选了 Enable SSL Proxying。
3.在下方的 Included Locations 列表中,点击右侧的 Add 按钮。
4.在新增的规则行中填写以下信息:
Host:输入你要抓包的目标域名。
若要抓取所有HTTPS流量,可填写 *(星号)。
若只抓取特定域名,填写如 api.example.com。
若抓取某域名下的所有子域名,填写 *.example.com。
Port:输入 443(HTTPS默认端口)。
5.点击 OK 保存设置。
4. 移动端配套配置
确保手机和电脑处于同一局域网,在手机WiFi设置中将代理设为手动,服务器填电脑局域网IP,端口填Charles默认的8888。
iOS 10以上系统需进入「设置→通用→关于本机→证书信任设置」,手动开启Charles证书的信任开关。
Android 7.0+系统默认不信任用户安装的CA证书,若目标App未在networksecurityconfig配置中显式声明信任用户证书,需借助Root权限工具(如JustTrustMe)或重打包App来绕过限制。
三、根证书已安装仍显示Encrypted的排查方案
核心原因是信任链未完全打通或SSL代理配置缺失,可按以下步骤逐一排查:
补全SSL代理配置:确认已勾选「Enable SSL Proxying」,且目标域名和对应端口已加入Included Locations白名单,重启Charles刷新配置。
确认系统级完全信任:检查各平台的证书信任设置是否完全生效,避免仅安装证书未开启信任开关的情况。
排查SSL Pinning机制:若普通浏览器请求可正常解密,仅特定App仍显示Encrypted,说明该App启用了证书绑定,需借助Frida等动态插桩工具Hook证书校验逻辑,或重打包App解除证书绑定限制。
其他细节校验:检查设备系统时间偏差是否超过5分钟(TLS协议会直接拒绝时间异常的证书),关闭系统自带的代理拦截、加密通信保护类功能,重启Charles和目标App后重新抓包测试。