【问题标题】:iOS - Using Charles with Alamofire and SSLiOS - 将 Charles 与 Alamofire 和 SSL 一起使用
【发布时间】:2015-10-08 09:14:53
【问题描述】:
我无法让 Charles 与 Alamofire 一起工作,我总是得到:
SSLHandshake:握手期间远程主机关闭连接
您可能需要配置您的浏览器或应用程序以信任查尔斯根证书。请参阅“帮助”菜单中的 SSL 代理。
我确实在 iOS 模拟器中安装了 Charles 根证书,并添加了要连接到 SSL 代理设置的主机。你有什么进一步的建议吗?
非常感谢!
【问题讨论】:
标签:
ios
alamofire
charles-proxy
【解决方案1】:
在 iOS11 上,我错过了这个额外的步骤。
在Settings 应用程序中,
导航到General.About.Certificate settings。
启用Charles Proxy SSL Proxying 开关。
【解决方案2】:
这可能是由于在 iOS 9 中添加了 App Transport Security。要允许 Charles 访问 SLL 流量,您需要将以下内容添加到应用的 Info.plist:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
(来自Charles' FAQ on the subject)
注意:您可能只想出于调试目的执行此操作,而不是在发布您的应用时基本上禁用 ATS。
【解决方案3】:
除了 Thor 描述的 NSAppTransportSecurity,您还必须信任证书。如果您进入 Charles 的“帮助”菜单,您将看到一个“SSL 代理”子菜单。当我从该子菜单中选择“安装查尔斯根证书”和“在 iOS 模拟器中安装查尔斯根证书”时,我就能够成功代理 https 请求。显然,我还将有问题的主机添加到“代理”-“SSL 代理设置”中(例如,端口为 * 和完整的主机名)。