0
我試圖限制我的應用程序與運行任何版本的1.2之前的TLS的服務器進行通信。從文檔,看來我應該可以通過調用SSLSetProtocolVersionMin
要做到這一點,所以我已經做到了:如何防止我的應用在iOS 8上從TLSv1.2降級?
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中的一個bug。我試圖通過只允許TLSv1.2使用的強密碼(請參閱'SSLSetEnabledCiphers')來解決這個問題 - 您可以從ATS規範中獲得一個列表。還有一個'SSLSetSessionStrengthPolicy'函數,但似乎不推薦使用。 –