我正在尝试限制我的应用与在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中是否不支持此功能,或者我需要采取其他步骤吗?
答案 0 :(得分:0)
您可以将iOS配置为仅使用Apple在iOS 9中的新应用程序传输安全性连接到符合最低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 video。
编辑:
我看到你添加到你的问题中,说明你需要在没有ATS的iOS 8上完成这个。但希望这个答案可以帮助那些使用iOS 9并且需要这样做的人,因为最初的问题不包括这个限制。