TLS V 1.1 和 TLS V 1.2 iOS 问题

TLS V 1.1 and TLS V 1.2 iOS issue

几个问题:

  1. 如果我的服务器已经是 运行 TLS1.2,我还需要向我的 info.plist 添加 NSAppTransportSecurity 功能吗?如果是,为什么?不应该所有苹果设备 运行 iOS9 或 >iOS10.11 版本都可以使用 TLS1.2 设置吗?

  2. 什么是前向保密?为什么我需要为特定域启用或禁用它?

  3. 什么是密码套装?

  1. 仅当您的服务器不支持至少 TLS 1.2 时,才需要 Info.plist 中的最小 TLS 版本。如果您的服务器是 TLS 1.2,则无需向 Info.plist 添加例外。但是,ATS 要求远不止 TLS 版本(请参阅 useyourloaf.com article,特别是 "Not Just HTTPS" 部分)

  2. 前向保密是服务器安全的一项功能,可确保如果您的密钥被泄露,任何过去捕获和存储的流量都无法被批量解密。有些服务器出于正当理由不支持它,因此 Apple 允许您在 ATS 例外中添加例外,而无需在您提交应用程序商店时提供理由。

  3. 密码套件是身份验证、加密、消息身份验证代码 (MAC) 和用于协商安全设置的密钥交换算法的组合。 (来自 Wikipedia)。基本上它是使服务器加密工作的部分的组合。

如果您不确定与服务器的连接是否会出现 ATS 问题,您可以在 iOS 10 设备上 运行 您的应用程序(我会做一个 iOS 9 设备也是如此,因为在某些情况下两者之间存在差异)。如果由于 ATS 导致连接失败,您将需要对服务器进行一些更改,或者向您的 Info.plist 添加例外。

或者您可以 运行 在您的 Mac 终端上执行以下命令:nscurl --ats-diagnostics <url> 它将 运行 在您的服务器上进行全套 ATS 检查并报告任何故障.失败通常意味着您需要添加 ATS 异常或解决服务器上的故障。

有关 ATS 故障排除和诊断的更多信息,this article 也是一个很好的资源。它讨论了我上面所说的一些事情,以及启用更多详细信息 CFNETWORK_DIAGNOSTICS 日志记录。