>几个问题:
-
如果我的服务器已经在运行 TLS1.2,我是否仍需要将 NSAppTransportSecurity 功能添加到我的 info.plist?如果是,为什么?不应该所有苹果设备运行 iOS9 或>iOS10.11 版本都可以使用 TLS1.2 设置吗?
-
什么是前向保密? 为什么我需要为特定域启用或禁用它?
-
什么是密码套装?
-
仅当您的服务器不支持至少 TLS 1.2 时,才需要 Info.plist 中的最小 TLS 版本。 如果您的服务器是 TLS 1.2,则无需向 Info.plist 添加例外。 但是,ATS要求不仅仅是TLS版本(请参阅 useyourloaf.com 文章,特别是"不仅仅是HTTPS"部分)
-
前向保密是服务器安全的一项功能,可确保如果您的密钥被泄露,任何过去捕获和存储的流量都无法批量解密。 某些服务器出于正当原因不支持它,因此 Apple 确实允许您在 ATS 例外中添加例外,而无需在提交应用商店时提供理由。
-
密码套件是身份验证、加密、消息身份验证代码 (MAC) 和用于协商安全设置的密钥交换算法的组合。(来自维基百科)。 基本上,它是使服务器加密工作的各个部分的组合。
如果您不确定与服务器的连接是否会遇到 ATS 问题,您只需在 iOS 10 设备上运行您的应用程序(我也会使用 iOS 9 设备,因为在某些情况下两者之间存在差异)。 如果连接由于 ATS 而失败,则需要进行一些服务器更改,或向 Info.plist 添加例外。
或者,您可以在Mac终端上运行以下命令:nscurl --ats-diagnostics <url>
它将在您的服务器上运行一整套 ATS 检查并报告任何故障。 失败通常意味着您需要添加 ATS 例外或解决服务器上的故障。
有关 ATS 故障排除和诊断的详细信息,本文再次是一个很好的资源。它讨论了我上面所说的一些事情,以及启用日志记录CFNETWORK_DIAGNOSTICS更多详细信息。