SSL证书
Charles会为网站生成自签名证书,这些证书使用Charles根证书进行签发(v3.10后每个安装实例会生成唯一根证书)。由于该根证书不在系统受信任列表中,浏览器或其他应用接收时会显示安全警告。详见SSL代理。
您可以选择在遇到每个站点证书时单独永久信任,此时无需信任Charles根证书。若希望自动信任所有Charles签发的证书,请按以下步骤操作。
以下为不同浏览器/应用的配置指南,通过信任Charles根证书可消除证书警告。
注意:Charles 3.10版本后根证书机制有变,若您曾为旧版本配置过,需重新操作。
Windows / Internet Explorer
在Charles中进入Help菜单,选择"SSL Proxying > Install Charles Root Certificate"。系统将提示CA根证书不受信任。
点击"Install Certificate"启动证书导入向导。必须将证书导入"受信任的根证书颁发机构"存储,需手动覆盖自动选择的存储位置。
完成向导后根证书即安装完成。可能需要重启IE生效。
Mozilla Firefox
首先确保Firefox已连接Charles,能在Charles中看到浏览记录。
访问https://chls.pro/ssl,勾选"信任此CA识别网站"选项完成导入。
macOS
在Charles中通过Help > "SSL Proxying > Install Charles Root Certificate"打开钥匙串访问。找到"Charles Proxy..."条目双击,展开"信任"选项,将"使用此证书时"从"使用系统默认"改为"始终信任"。关闭窗口时需输入管理员密码更新系统设置。
可能需要重启Safari生效。
iOS设备
- 在设置 > Wi-Fi中配置HTTP代理指向Charles
- Safari访问https://chls.pro/ssl安装证书
- iOS 10.3+需在设置 > 通用 > 关于 > 证书信任设置中启用Charles证书完全信任(iOS 10变更说明)
- 配置完成后即可通过Charles代理访问SSL网站
Charles 3.11.4+支持App Transport Security(ATS)。
iOS模拟器
退出模拟器,在Charles中选择Help > "SSL Proxying > Install Charles Root Certificate in iOS Simulators"。该操作会为所有模拟器安装根证书,启动后即可代理SSL流量。
tvOS
需通过App Store下载Apple Configurator 2配置:
- 创建新描述文件
- 添加全局HTTP代理负载:手动类型,填写Charles所在主机的地址端口
- 添加证书负载:在Charles中通过Help > SSL Proxying保存.cer格式根证书,在配置工具中添加该文件
部署描述文件到Apple TV后,进入设置 > 通用 > 关于 > 证书启用信任。
Android
Android N起需修改应用配置才能信任Charles证书,这意味着仅能代理您控制的应用。
添加网络安全配置文件,允许调试版本信任用户安装的CA证书(如Charles根证书)。生产版本仍使用默认信任配置。
创建res/xml/network_security_config.xml:
<network-security-config>...</network-security-config>
在manifest中引用:
<manifest...><application android:networkSecurityConfig="@xml/network_security_config"...>
Google Chrome
macOS系统请参照前述macOS指南,本段仅适用于Windows。
在Charles中保存二进制格式(.cer)根证书,Chrome设置 > 高级 > 管理证书 > 受信任根证书颁发机构 > 导入该文件。
Java应用
将Charles根证书添加到Java信任库(需在Java升级后重复操作):
保存Base64编码(.pem)证书,使用keytool导入$JAVA_HOME/jre/lib/security/cacerts(默认密码changeit)。Windows需管理员权限运行命令。
macOS浏览器Java插件需额外导入/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/cacerts。
Python
requests模块需单独配置信任Charles证书:
session = Session()
session.verify = "charles-ssl-proxying-certificate.pem"
(感谢Felipe Ferri提供的示例代码)