開始時,我們有它獲取對的Mac 10.6 SDK構建的遺留應用程序。我們正在使用的NSURLMutableRequest
和NSURLConnection
進行網絡通話。使用Wireshark,我注意到在10.9 - 10.11.2上所有這些調用都是在TLSv1上進行的。在10.11.6起(也10.13測試版)這些獲得由上TLSv1.2工作。默認SSLLevel在Mac OS 10.9使用NSURLConnection的
我更改了代碼以強制TLSv1.2使用CFURLRequestSetSSLProperties
(dlsym)。我設置kCFStreamSSLLevel
爲 「kCFStreamSocketSecurityLevelTLSv1_2
」。在這些之後,我可以看到現在調用了TLSv1.2。
從蘋果文檔上kCFStreamSSLLevel
:
默認情況下,流的安全等級 kCFStreamSocketSecurityLevelNegotiatedSSL。
和從kCFStreamSocketSecurityLevelNegotiatedSSL
:
指定,可以是 協商的最高級別的安全性協議被設置爲用於插座流的安全協議。
我知道TLSv1.2工作支撐在10.9。作爲測試,我設置kCFStreamSSLLevel
到 kCFStreamSocketSecurityLevelNegotiatedSSL
和10.9它仍然作出的TLSv1電話。
我有2個問題:
爲什麼電話大幹快上的TLSv1取得了10.9-10.11.2?難道他們不應該自動選擇可用即TLSv1.2工作最高版本。
當使用
kCFStreamSocketSecurityLevelTLSv1_2
,如果服務器不支持TLSv1.2或者調用會失敗,是否會回退到較低版本? 我發現這一點的同時檢查:
kCFStreamSocketSecurityLevelNegotiatedSSL
討論:流 屬性值,同時設置和複製操作。表示使用TLS 或SSL與回退到較低版本。對於 實例,這是HTTPS所做的。
有沒有這樣的聲明kCFStreamSocketSecurityLevelTLSv1_2
甚至kCFStreamSocketSecurityLevelTLSv1
。那麼他們是否會降低版本?