iOS-将Charles与Alamofire和SSL一起使用

iOS-将Charles与Alamofire和SSL一起使用,ios,alamofire,charles-proxy,Ios,Alamofire,Charles Proxy,我不能让查尔斯和阿拉莫菲尔一起工作,我总是: SSLHandshake:握手期间远程主机关闭连接 您可能需要将浏览器或应用程序配置为信任根证书。请参见“帮助”菜单中的SSL代理 我确实在iOS模拟器中安装了Charles根证书,并将要连接的主机添加到SSL代理设置。你还有什么进一步的建议吗? 非常感谢 这可能是由于iOS 9中增加了应用程序传输安全性。要允许Charles访问SLL流量,您需要在应用程序的Info.plist中添加以下内容: <key>NSAppTransportSe

我不能让查尔斯和阿拉莫菲尔一起工作,我总是:

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

我确实在iOS模拟器中安装了Charles根证书,并将要连接的主机添加到SSL代理设置。你还有什么进一步的建议吗?
非常感谢

这可能是由于iOS 9中增加了应用程序传输安全性。要允许Charles访问SLL流量,您需要在应用程序的Info.plist中添加以下内容:

<key>NSAppTransportSecurity</key>
    <dict>
      <key>NSAllowsArbitraryLoads</key>
      <true/>
   </dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads
(来自)


注意:您可能只希望出于调试目的执行此操作,而不希望在应用程序出厂时基本禁用ATS。

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

在iOS11上,我错过了这个额外的步骤

设置
应用程序中

导航到
常规
关于
证书设置

启用代理SSL代理开关