在iOS上使用Charles作为SSL代理

大多数应用程序都使用HTTPS请求来访问数据,并且由于SSL加密,很难从App Store中已存在的iOS应用程序中对其进行调试。 Charles是帮助您检查HTTPS请求的完美工具。

Charles Proxy是一款旨在通过代理调试Web应用程序的软件。 它不是免费的,但您可以使用其30天的试用版。

作为iOS移动开发人员,您可以将其作为与iOS设备一起使用的HTTP代理, 以中间人的方式来检查手机发出的请求。 以下是在手机上启用该功能的步骤。

在进行任何操作之前,请确保您的设备和计算机位于同一网络上。 然后,您需要在设备上安装“查尔斯根证书”。 为此,请按照帮助> SSL代理>在移动设备或设备上安装Charles Root证书进行操作 。 它将为您提供IP地址和要使用的端口。

在iPhone的Wifi设置下,您需要使用Charles给出的计算机IP地址启用HTTP代理。

保存后,将在笔记本电脑上提示对话框,要求允许此新访问权限。 您的设备连接现在将抛出Charles。

您可以立即看到HTTP请求。 但是,要检查HTTPS请求,还需要执行几个步骤才能启用SSL代理。

使用Safari,您必须导航到chls.pro/ssl才能在手机上安装Charles证书并进行验证。 以后您仍然可以在“设置”>“常规”>“配置文件”下找到它。

在您的手机上安装证书后,我们需要确定证书已启用。 为此,请遵循设置>常规>关于>证书,然后启用您刚刚下载的证书

在Google网站上进行测试,我仍然看不到发送的内容。 我还可以看到未为此主机启用SSL代理 。 我们需要完成在Charles端启用SSL代理的功能。

返回您的笔记本电脑,在代理> SSL代理设置下 ,我们将添加一行以覆盖Google域。 我还指定了HTTPS端口443使其保持干净。 您可以为通配符使用*

终于,我请求中的所有内容现在都清楚了。

在后台发生的事情,从您的笔记本电脑到Google的请求仍在HTTPS下。 但是,在使用从笔记本电脑到手机的本地受信任证书时,在实际发出请求之前,可以清晰地访问发送的那些数据。 您本地网络上的其他任何人都无法访问那些未加密的数据。

此示例涵盖了来自Safari之类的Web内容的调试请求。 但是,如果要使用它调试特定的移动应用程序,则可能需要在plist文件中添加安全性标记才能启用该功能。

 NSAppTransportSecurity  NSAllowsArbitraryLoads   

总之 ,Charles Proxy使用起来非常直观,但是设置起来却很棘手,我希望本教程也可以使其他人更容易。

如果您对该文章有任何疑问或建议,我们将很乐意在评论部分提供帮助


最初发布在 http://benoitpasquier.com/charles-ssl-proxy-ios/