装了Charles根证书还是显示Encrypted?真相藏在这3个细节里

一、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,依次点击顶部菜单 ‌HelpSSL ProxyingSave Charles Root Certificate‌ ,将证书保存为.pem.cer格式的本地文件。

  • Windows系统:按Win+R输入mmc打开控制台,点击「文件添加/删除管理单元 」,选择「证书 」并添加,选择「本地计算机 」后确认;展开「证书受信任的根证书颁发机构证书 」,右键选择「所有任务导入 」,选中导出的证书文件,手动指定存储位置为「受信任的根证书颁发机构」,完成后重启Charles。
  • macOS系统:双击导出的证书文件,自动打开「钥匙串访问」,将证书导入到「系统」钥匙串中;双击刚导入的Charles证书,展开「信任」选项,将所有选项设置为「始终信任」,输入系统密码确认。
  • Android设备:将证书文件传到手机,进入「设置→安全→加密与凭据→安装证书」,选择「CA证书」,选中证书文件完成安装;高版本安卓系统需将证书移动到系统证书目录,才能让所有应用识别信任,安装完成后重启设备。
3. SSL代理核心配置

点击顶部菜单 ‌ProxySSL 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。

手机自带浏览器访问chls.pro/ssl下载安装证书:

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后重新抓包测试。