簡體   English   中英

.NET 4.5 和 .NET 4.5.1 是否默認啟用 TLS 1.1 和 TLS 1.2?

[英]Is TLS 1.1 and TLS 1.2 enabled by default for .NET 4.5 and .NET 4.5.1?

在我們的 Windows 2012 Server R2 上,我們需要禁用 TLS 1.0。

但是我們有 .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 ?

.NET 4.5 和 .NET 4.5.1 是否默認啟用 TLS 1.1/1.2?

否。為各種框架版本啟用的默認協議是:

  • .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 ] [ 3 ]

雖然 Microsoft 建議不要明確指定協議版本,而要使用操作系統的默認值:

為了確保.NET Framework應用程序保持安全的TLS版本應該被硬編碼。 .NET Framework 應用程序應使用操作系統 (OS) 支持的 TLS 版本。

...仍然可以通過使用ServicePointManager類來選擇您的應用程序支持哪些協議,特別是通過將SecurityProtocol屬性設置為相關的SecurityProtocolType s。

在您的情況下,您希望使用以下內容:

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

請注意,自 2020 年起,TLSv1 和 TLSv1.1 已被有效棄用; 您應該避免構建依賴這些協議的新應用程序,並盡一切努力升級當前使用它們的應用程序。

Ian Kemp 的答案沒有問題,但我只是想提供另一個答案,這意味着您不必重新編譯代碼。

任何高於 .NET 4.5 的都可以支持 TLS 1.2,但是低於 .NET 4.7 的任何東西的默認值都是 TLS 1.1。 因此,如果您需要使用 TLS 1.2 訪問某些內容,則會出現錯誤,因為它將嘗試使用默認值。

您可以將以下代碼添加到配置文件中,以覆蓋默認值。

<runtime>
      <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSystemDefaultTlsVersions=false"/>
</runtime>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM