0

我试图限制我的应用程序与运行 1.2 之前任何版本的 TLS 的服务器通信。从文档看来,我应该可以通过调用来做到这一点SSLSetProtocolVersionMin,所以我做到了:

SSLContextRef context = SSLCreateContext(NULL, kSSLClientSide, kSSLStreamType);
SSLSetProtocolVersionMax(context, kTLSProtocol12);
SSLSetProtocolVersionMin(context, kTLSProtocol12);

我已经验证调用SSLSetProtocolVersionMin不会返回错误,但我仍然能够连接到协商到 SSLv3 的服务器。

SSLSetProtocolVersionMax似乎工作正常,因为当我将其设置为 TLSv1.1 并将服务器设置为 TLSv1.2 时,我无法连接到服务器。

看来这在 iOS 9 上按预期工作。有人知道 iOS 8 是否不支持此功能,还是我需要采取其他步骤?

4

1 回答 1

0

您可以使用 Apple 在 iOS 9 中的新应用程序传输安全性将 iOS 配置为仅连接到满足最低 TLS 版本的服务器。

您可以将如下代码添加到 Info.plist 文件中:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>mydomain.com</key>
        <dict>
            <key>NSThirdPartyExceptionMinimumTLSVersion</key>
            <string>1.2<string/>
        </dict>
    </dict>
</dict>

您可以观看WWDC 视频

编辑:

我看到您在问题中添加了声明您需要在没有 ATS 的 iOS 8 上完成此操作。但希望这个答案能帮助那些使用 iOS 9 并且需要这样做的人,因为最初的问题不包括这个限制。

于 2016-02-05T21:37:08.387 回答