【发布时间】:2016-05-15 23:59:17
【问题描述】:
我试图限制我的应用程序与运行 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 中是否不受支持,或者我是否需要采取其他步骤?
【问题讨论】:
-
可能是 iOS 8 中的一个错误。我会尝试通过仅允许 TLSv1.2 使用的强密码(请参阅
SSLSetEnabledCiphers)来解决它——您可以从 ATS 规范中获取列表。还有一个SSLSetSessionStrengthPolicy函数,但它似乎已被弃用。
标签: ios secure-transport