WEB 调试代理应用程序

适用于windows,mac OS和Linux

SSL证书

Charles会为网站生成自己的证书,并使用Charles根证书进行签名,该证书是为你安装的Charles唯一生成的(从v3.10开始)。当浏览器或其他应用程序收到该证书时,你会看到一个警告,因为Charles根证书不在你的可信根证书列表中。请参阅SSL代理。

您可以选择在遇到每个站点的证书时永久信任它们,在这种情况下,您无需信任Charles根证书。 如果您想自动信任Charles颁发的每份证书,请继续执行以下说明。

以下说明适用于不同的浏览器和应用程序,以帮助您信任自己的Charles 根证书,因此您不再看到证书警告。

请注意,Charles根证书方法在Charles的3.10版本中发生了变化,因此,如果您已针对旧版本的Charles使用了此过程,则需要再次进行此操作。

Windows/IE浏览器

在Charles中,转到“帮助”菜单,然后选择“ SSL代理>安装Charles根证书”。 将出现一个窗口,警告您CA根证书不受信任。

单击“安装证书”按钮以启动证书导入向导。 证书必须导入“受信任的根证书颁发机构”证书存储中,因此请覆盖自动证书存储选择。

完成向导,您的Charles根证书现在已安装。 在安装生效之前,您可能需要重新启动IE浏览器。

火狐浏览器

首先确保火狐浏览器已连接到Charles。 您应该会看到Charles中记录了从火狐浏览器浏览的情况。

在火狐中访问https://chls.pro/ssl。 您将看到一个证书导入对话框。 选中选项“信任此CA以标识网站”并完成导入。

mac操作系统

在Charles中,转到“帮助”菜单,然后选择“ SSL代理>安装Charles根证书”。 钥匙串访问将打开。 找到“Charles代理...”条目,然后双击以获取有关它的信息。 展开“信任”部分,然后在“使用此证书时”旁边,将其从“使用系统默认值”更改为“始终信任”。 然后关闭证书信息窗口,系统将提示您输入管理员密码来更新系统信任设置。

您可能需要退出并重新打开Safari才能看到更改。

iOS设备

  • 在“设置应用”>“ Wifi设置”中将iOS设备设置为将Charles用作其HTTP代理。
  • 打开Safari并浏览到https://chls.pro/ssl。 Safari将提示您安装SSL证书。
  • 如果您使用的是iOS 10.3或更高版本,请打开Settings.app并导航至“常规”>“关于”>“证书信任设置”,找到Charles代理证书,然后将其打开以启用完全信任(有关iOS 10中此更改的更多信息)。
  • 现在,您应该能够使用SSL代理通过Charles访问SSL网站。
Charles从3.11.4版本开始支持App Transport Security(ATS)。

iOS模拟器

退出您的iOS模拟器。 启动Charles并转到“帮助”菜单。 选择“ SSL代理>在iOS模拟器中安装Charles根证书”项。 这会将您的Charles根证书安装到所有iOS模拟器中。 现在,当您启动iOS模拟器时,您应该能够使用SSL代理通过Charles访问SSL网站。

电视操作系统

为了在电视操作系统上更改代理设置,您必须使用苹果商店中的Apple Configurator 2。
  • 创建一个新的文档
  • 添加全局HTTP代理有效负载
    • 代理类型:手动
    • 填写代理服务器和端口以指向台式机上的Charles。 不需要用户名或密码。
  • 在“证书”有效负载中添加“Charles根证书”:
    • 在Charles中,从“帮助”>“ SSL代理”菜单中选择“保存Charles” “ Charles根证书”,然后从文件类型下拉列表中选择.cer格式。
    • 在Apple Configurator 2中,使用该文件添加证书有效载荷。
将配置文件安装到Apple TV上。

然后进入设置>常规>关于>证书,并启用对Charles代理证书的信任。

安卓

从Android N开始,您需要向您的应用添加配置,以使其信任Charles SSL代理生成的SSL证书。 这意味着您只能将SSL代理与您控制的应用一起使用。

为了将您的应用程序配置为信任Charles,您需要将网络安全配置文件添加到您的应用程序。 该文件可以覆盖系统默认设置,使您的应用可以信任用户安装的CA证书(例如Charles根证书)。 您可以指定这仅适用于应用程序的调试版本,以便生产版本使用默认的信任配置文件。

将文件res / xml / network_security_config.xml添加到您的应用程序:
< network-security-config> < debug-overrides> < trust-anchors> < !-- Trust user added CAs while debuggable only --> < certificates src="user" /> < /trust-anchors> < /debug-overrides> < /network-security-config> 然后在您的应用清单中添加对此文件的引用,如下所示: < ?xml version="1.0" encoding="utf-8"?> < manifest ... > < application android:networkSecurityConfig="@xml/network_security_config" ... > ... < /application> < /manifest>

谷歌浏览器

在mac操作系统上,请按照上面有关mac操作系统的说明进行操作。 这些说明仅适用于Windows。

在Charles中,转到“帮助”菜单,然后选择“ SSL代理>保存Charles根证书”。 将根证书以二进制证书(.cer)的形式保存到您的桌面,或在下一步中可以轻松访问的位置。

在谷歌浏览器中,打开设置。 在设置页面的底部,单击“高级”以打开高级部分,然后单击“管理证书…”按钮。

转到“受信任的根证书颁发机构”选项卡,然后单击“导入…”。

找到在上一步中从Charles保存的证书文件,然后单击“下一步”和“完成”,保留默认选项,直到完成导入。 谷歌浏览器现在将始终信任由Charles签名的证书。

导入后,您可以删除保存的证书文件。

Java应用程序

您可以将您的Charles根证书添加到Java中的根证书信任存储中,然后所有Java应用程序将信任Charles颁发的证书。 请注意,每次升级Java安装时,可能都需要这样做。

在Charles中,转到“帮助”菜单,然后选择“ SSL代理>保存Charles根证书”。 将根证书以Base 64编码的证书(.pem)保存到您的桌面,或在下一步中可以轻松访问它的位置。

现在找到cacerts文件,该文件应该位于$ JAVA_HOME / jre / lib / security / cacerts中,其中$ JAVA_HOME是您正在使用的JVM的Java主目录。

在Linux上,可能已经设置了$ JAVA_HOME。 在mac操作系统上,如果未设置,请尝试运行/ usr / libexec / java_home以获取JVM的位置。

然后输入(替换$ JAVA_HOME和证书的相应路径):
sudo keytool -import -alias charles -file ~/Desktop/charles-ssl-proxying-certificate.pem -keystore JAV (changeit是cacerts文件上的默认密码)

在Windows上,您可能需要以管理员身份从命令提示符运行以上命令,并删除该行开头的“ sudo”。

然后尝试:
keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit 如果您安装了多个Java,则可能需要弄清正在使用哪个Java来运行应用程序,并在适当的位置上进行安装。 或在所有Java安装中执行。

在mac操作系统上,Java插件在/ Library / Internet插件/JavaAppletPlugin.plugin/Contents/Home/lib/security中具有其cacerts文件。 如果希望浏览器中运行的小程序信任Charles,则应将Charles根证书添加到该cacerts文件。

Python

当您尝试将其与Charles中的SSL代理一起使用时,Python的请求模块将失败并显示错误: requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate
verify failed (_ssl.c:590)
您可以配置请求以信任您的Charles根证书。 首先使用帮助> SSL代理>保存Charles根证书菜单将证书另存为.pem文件。 然后按以下方式配置您的会话:
从请求导入会话

session = Session()
session.verify = "charles-ssl-proxying-certificate.pem"
感谢Felipe Ferri提供此示例代码。