2016-01-21 704 views
4

在我們的Windows 2012 Server R2上,我們需要禁用TLS 1.0。對於.NET 4.5和.NET 4.5.1,默認啓用TLS 1.1和TLS 1.2

但是,我們運行了.NET 4.5 Wcf服務。我們發現,如果我們禁用TLS 1.0,WCF服務不再運行,因爲我們得到錯誤'現有連接被遠程主機強行關閉'。

在.NET 4.5和.NET 4.5.1中默認啓用TLS 1.1/1.2嗎?如果不是,我們認爲是這種情況,那麼在我們的WCF項目中,我們是否強制該項目使用TLS 1.1/1.2?

+0

一般不會,默認的協議是SSL 3.請參閱http://stackoverflow.com/questions/28286086/default-securityprotocol-in-net-4-5 – JConstantine

+0

重複? http://stackoverflow.com/questions/29663974/wcf-client-in-net-4-51-how-to-enable-tls-1-2-when-webrequest-is-used – usselite

回答

18

號的各種框架版本啓用默認的協議是:

  • 的.NET Framework 4.5和4.5.1:SSLv3和使用TLSv1
  • 的.NET Framework 4.5.2:在SSLv3,使用TLSv1和TLSv1.1
  • 的.NET Framework 4.6和更高版本:使用TLSv1,TLSv1.1,和TLS1.2

來源:[1][2]

您可以指定哪些協議應用程序支持使用ServicePointManager類,特別是通過設置SecurityProtocol屬性,它在你的情況,你會想設置爲以下:

System.Net.ServicePointManager.SecurityProtocol = 
    SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 
+3

非常感謝你 - 這是瘋了,這沒有被選爲答案。一行代碼,你節省了我幾個小時的調試或註冊表黑客攻擊。謝謝。 – bri

+0

這絕對是正確的。但是,通過安裝.NET 4.6或更高版本並啓用[.NET強加密註冊表項](https://docs.microsoft.com/zh-cn/officeonlineserver/enable-tls),也可以在不更改代碼的情況下啓用TLS 1.2 -1-1和-TLS-1-2-支持 - 在辦公室 - 在線服務器#使能強加密技術在淨框架-45或-更高)。更多信息在這裏:https://github.com/TheLevelUp/pos-tls-patcher – user24601