2017-06-13 62 views
1

阅读Apple Docs和众多Apple Developer论坛帖子后,我仍不清楚您是否需要任何ATS免除对本地网络进行安全(TLS/HTTPS)呼叫机器(不合格域名例如:https://MyServer:9000)。下面的this doc状态部分:应用传输安全(ATS)和本地已安全连接

可用性ATS的远程和本地连接应用程序传输 安全(ATS)只适用于公共主机名进行的连接。 系统不提供ATS保护,以取得联系:

  • 互联网协议(IP)地址
  • 非限定主机名称
  • 本地主机采用。本地顶级域名(TLD)

要连接到 不合格的主机名或.local域,必须将值为 的NSAllowsLocalNetworking键设置为YES。

注:虽然ATS是未受强制连接到本地主机,苹果 强烈建议使用传输层安全(TLS)的任何地方 连接,再加上使用自签名证书对 验证本地IP地址

所以,做我需要添加NSAllowsLocalNetworking甚至使已经ATS规范(向前保密,TLS 1.2等)安全连接到限定的主机名(私人本地服务器)?或者是NSAllowsLocalNetworking只需要un安全的本地电话?

回答

0

NSAllowsLocalNetworking键用来请求本地网络调用的ATS例外。如果您的本地服务器符合ATS标准,则不需要添加该例外。这很简单,可以验证。只需在iOS 10设备上运行您的应用程序,无需在Info.plist中发生这种异常。如果设备上的连接成功,您知道没有导致问题的ATS违例。如果它不工作,你很可能违反了ATS要求之一(尽管它好像你已经验证了一些对ATS遵守高层次的需求)。

如果你有一个失败,你可以用下面的测试ATS遵守的网址:你的Mac上使用的nscurl --ats-diagnostics <url>命令。您可以通过以下方式了解有关ATS的更多信息,以及如何在this post中使用/解释上述nscurl命令的结果。

请注意,NSAllowsLocalNetworking异常是在iOS 10中添加的,因此将它包含在构建中并在iOS 9设备上运行将不会导致更改。如果你最终需要它,你需要支持的iOS 9,你会想无论是在你的Info.plistNSAllowsLocalNetworkingNSAllowsArbitraryLoads添加。在iOS上10,它只会禁用ATS用于本地连接,但iOS9设备(不支持NSAllowsLocalNetworking条目),ATS将全线被禁用。

+0

感谢。将通过测试进行验证并回应此线程标记此答案,如果事实证明不需要本地电话的标志 – stonedauwg