Charles SSL证书配置指南

Charles会为访问的网站生成专属证书,并使用Charles根证书进行签名(该根证书自3.10版本起会为每个Charles安装实例单独生成)。当浏览器或其他应用程序接收到该证书时,由于Charles根证书不在您的受信任根证书列表中,系统会显示安全警告。详见SSL代理说明。

您可以选择在访问每个网站时永久信任其证书(此时无需信任Charles根证书)。若希望自动信任所有由Charles颁发的证书,请按以下指引操作。

以下是为不同浏览器/应用程序添加Charles根证书信任的配置指南,配置后将不再显示证书警告。

注意:Charles根证书机制在3.10版本后有所变更,若您曾为旧版本配置过信任,需重新操作。

Windows/Internet Explorer

1. 在Charles中进入Help菜单,选择"SSL Proxying > Install Charles Root Certificate"

2. 系统将弹出CA根证书不受信任的警告窗口

3. 点击"Install Certificate"启动证书导入向导

4. 必须将证书导入"受信任的根证书颁发机构"存储区,请手动覆盖自动选择的存储位置

5. 完成向导后即安装成功,可能需要重启IE生效

Mozilla Firefox

1. 首先确保Firefox已通过Charles代理(能在Charles中看到浏览记录)

2. 访问 https://chls.pro/ssl

3. 在证书导入对话框中勾选"信任此CA识别网站"选项并完成导入

macOS

1. 在Charles中进入Help菜单,选择"SSL Proxying > Install Charles Root Certificate"

2. 钥匙串访问工具将自动打开

3. 找到"Charles Proxy..."条目,双击查看详情

4. 展开"信任"区块,将"使用此证书时"选项从"使用系统默认"改为"始终信任"

5. 关闭窗口时需输入管理员密码更新系统信任设置

6. 可能需要重启Safari生效

iOS设备

1. 在设置 > Wi-Fi中配置设备使用Charles作为HTTP代理

2. 用Safari访问 https://chls.pro/ssl 安装SSL证书

3. iOS 10.3+用户需额外进入 设置 > 通用 > 关于 > 证书信任设置,启用Charles证书的完全信任

4. 现在可通过Charles代理访问SSL网站

注:3.11.4版本起支持App Transport Security (ATS)

iOS模拟器

1. 退出当前模拟器

2. 在Charles的Help菜单中选择"SSL Proxying > Install Charles Root Certificate in iOS Simulators"

3. 该操作会为所有模拟器安装根证书

4. 启动模拟器后即可通过Charles代理访问SSL网站

tvOS

1. 使用App Store中的Apple Configurator 2创建配置文件:

  • 添加全局HTTP代理有效载荷(手动类型,填写桌面Charles代理地址)
  • 通过Help > SSL Proxying > Save Charles Root Certificate导出.cer格式证书
  • 在Configurator中添加证书有效载荷

2. 将配置文件部署到Apple TV

3. 进入 设置 > 通用 > 关于 > 证书 启用Charles证书信任

Android

自Android N起,需修改应用配置才能信任Charles SSL代理证书(仅限您控制的应用):

1. 在应用中添加res/xml/network_security_config.xml:

<network-security-config>
  <debug-overrides>
    <trust-anchors>
      <!-- 仅调试版本信任用户安装的CA证书 -->
      <certificates src="user" />
    </trust-anchors>
  </debug-overrides>
</network-security-config>

2. 在AndroidManifest.xml中引用该配置:

<application android:networkSecurityConfig="@xml/network_security_config">

Google Chrome

Windows用户专属指南(macOS请参照前文):

1. 通过Help > SSL Proxying > Save Charles Root Certificate导出二进制证书(.cer)

2. 在Chrome设置 > 高级 > 管理证书中导入到"受信任的根证书颁发机构"

3. 导入完成后可删除证书文件

Java应用

将Charles根证书添加到Java信任库(Java升级后需重复操作):

1. 导出Base64编码证书(.pem)

2. 定位$JAVA_HOME/jre/lib/security/cacerts文件

3. 执行命令(需管理员权限):

sudo keytool -import -alias charles -file 证书路径 -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit

4. 浏览器Java插件需单独配置:/Library/Internet Plug-Ins/JavaAppletPlugin.plugin下的cacerts文件

Python

解决requests模块的SSL验证错误:

1. 通过Help菜单导出.pem格式证书

2. 配置Session:

from requests import Session
session = Session()
session.verify = "证书路径.pem"