iOS - 如何在使用Alamofire和SSL时使用Charles

3

我无法让Charles与Alamofire一起工作,总是会出现以下提示:

SSL握手:远程主机在握手期间关闭了连接 您可能需要配置浏览器或应用程序以信任Charles根证书。请参见帮助菜单中的SSL代理。

我已在iOS模拟器中安装了Charles根证书,并将要连接的主机添加到SSL代理设置中。您有其他建议吗?非常感谢!

3个回答

4
在iOS 11上,我错过了这个额外的步骤。
设置 应用中,
导航到 通用 . 关于本机 . 证书设置
启用 Charles代理SSL代理 开关。

3
这可能是由于iOS 9中增加了应用程序传输安全性所致。要允许Charles访问SLL流量,您需要将以下内容添加到应用程序的Info.plist文件中:
<key>NSAppTransportSecurity</key>
    <dict>
      <key>NSAllowsArbitraryLoads</key>
      <true/>
   </dict>

(来自查尔斯关于此主题的常见问题解答)

注意:您可能只想出于调试目的而这样做,而不是在应用程序完全禁用ATS的情况下发布您的应用程序。


2
除了Thor提到的NSAppTransportSecurity之外,您还需要信任证书。如果您转到Charles的“帮助”菜单,您将看到一个“SSL代理”子菜单。当我从该子菜单中选择“安装Charles根证书”和“在iOS模拟器中安装Charles根证书”后,我就能够成功地代理https请求。显然,我还将有关主机添加到“代理” - “SSL代理设置”(例如,使用端口 * 和完整主机名)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接