【问题标题】:iOS 10 Simulator Not Working Behind ProxyiOS 10 模拟器不能在代理后面工作
【发布时间】:2017-02-07 20:10:16
【问题描述】:

自从从 7.3.1 升级到 Xcode 8 后,我遇到了一个问题。
我在工作中使用代理,尽管模拟器上的 Safari 可以工作,但模拟器不会通过我的应用程序与 Web 服务建立任何连接。当我在代理之外尝试时一切正常,并且在 7.3.1 上运行良好。

现在有人需要对 Xcode 8 和 iOS 10 进行任何更改吗?

【问题讨论】:

标签: ios xcode proxy ios-simulator xcode8


【解决方案1】:

模拟器运行一个单独的 iOS/watchOS/tvOS 用户空间,但共享主机 macOS 内核。 Simulator 中的NSURLSession 有自己的缓存,但使用主机套接字层。

在模拟器中尝试 Safari 中的相关 URI,看看你会得到什么。如果您的代理正在对 SSL 连接执行中间人攻击,它们将被视为无效而被拒绝。如果您的代理需要身份验证,它将无法工作,因为模拟器钥匙串与主机钥匙串是分开的(尽管这是在 Xcode 7 中完成的,所以它不是新的)。

FTW:我们不建议代理 MITM SSL 连接;这会使您很危险地暴露在企业防火墙内运行的攻击者面前,这要归功于网络钓鱼攻击,如今这种情况非常普遍。

我们还强烈建议您将 ATS 例外限制在绝对最低要求。如果您的 Web 服务使用不安全的 SSL 设置,您应该升级您的 Web 服务,而不是将您的用户降级为易受攻击的连接。如果您只需要连接一两个第三方主机,请将您的 ATS 例外限制为仅这些主机。

如果这些都没有帮助,请在https://bugreporter.apple.com 提交错误。包括sysdiagnose~/Library/Logs/CoreSimulator 的输出。

【讨论】:

  • 如何让模拟器使用系统钥匙串/或询问并记住密码?在连接内以纯文本形式提供密码:willSendRequestForAuthenticationChallenge(或相关的 NSURLSession 回调)听起来不是一个很好的解决方案(尽管它有效..)
  • 您可以在模拟器中对标准 HTTP 身份验证挑战进行身份验证,它是当前不起作用的经过身份验证的代理。
猜你喜欢
  • 2017-05-21
  • 1970-01-01
  • 2015-12-15
  • 2013-10-23
  • 2016-12-12
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多