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