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网站。
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中,使用该文件添加证书有效载荷。
然后进入设置>常规>关于>证书,并启用对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] certificateverify failed (_ssl.c:590) 您可以配置请求以信任您的Charles根证书。 首先使用帮助> SSL代理>保存Charles根证书菜单将证书另存为.pem文件。 然后按以下方式配置您的会话:
从请求导入会话
session = Session()
session.verify = "charles-ssl-proxying-certificate.pem" 感谢Felipe Ferri提供此示例代码。