iOS应用仅与https和Apple Transport Security Impact进行通信

时间:2016-02-03 16:27:28

标签: ios https tls1.2

我的问题与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,但目前时间和资源有限。

1 个答案:

答案 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将帮助您找出您真正需要指定的内容,以便与您的服务器通信。