我的问题与Apple Transport Security(ATS)有关,它对我的配置有影响。如果我不遵守它会让我感到困惑。
我有一个iOS应用程序,它与服务器和仅强制执行https
连接的API进行通信,但同时我的TLS1.0带有SHA256和Cipher套件而我的配置没有启用前向保密。
如果我继续通过以下方式绕过ATS:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
ATS文档中让我感到困惑的是:
禁用ATS允许连接,无论HTTP或HTTPS配置如何,允许连接到具有较低TLS版本的服务器,并允许使用不支持前向保密(FS)的密码套件进行连接。
这是否意味着我的应用和我的服务器仍会继续通过https
进行通信而没有副作用?即连接不会因为我的服务器始终强制执行https
但不符合ATS的情况而失败。
换句话说,我是否必须立即升级我的服务器以支持TLS1.2,具有Forward Secrecy和其他ATS要求?假设我要使用iOS 9和最新的XCode对我的应用程序进行更新。
另一方面,我知道我应该采用ATS,但目前时间和资源有限。
答案 0 :(得分:2)
您不必立即升级服务器。您也不必完全关闭ATS。
相反,您可以告诉ATS您的服务器使用TLSv1并且不会在info.plist中通过类似的方式支持FS:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>your.servers.domain.here</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
</dict>
</dict>
</dict>
nscurl --ats-diagnostics --verbose $YOUR_API_URL
将帮助您找出您真正需要指定的内容,以便与您的服务器通信。