簡體   English   中英

.NET Framework 3.5 和 TLS 1.2

[英].NET Framework 3.5 and TLS 1.2

我目前有一個使用 .NET 3.5 框架的 Web 應用程序,我想知道它是否與 TLS 1.2 兼容。 在我們的代碼中,我們沒有指定 TLS 版本。 這是一個遺留應用程序,現在還沒有重新編譯。 我沒有找到關於您是否可以或不可以的太多信息,但我的印象是兼容性更多地取決於操作系統版本。 看起來最低是 2008 R2。 目標是讓貝寶在 7 月 1 日正常溝通。

如前所述,.net 3.5.1 現在支持 TLS 1.2; 但您不需要@Paulina 的回答中提到的注冊表更改。

我將 VS 2008 與 .net 3.5.30729.4926 一起使用。 我所要做的就是:

添加進口:

Imports System.Security.Authentication
Imports System.Net

將此添加到我的代碼(C#)中:

public const SslProtocols _Tls12 = (SslProtocols)0x00000C00;
public const SecurityProtocolType Tls12 = (SecurityProtocolType)_Tls12;
ServicePointManager.SecurityProtocol = Tls12

VB.net 版本:

Const _Tls12 As SslProtocols = DirectCast(&HC00, SslProtocols)
Const Tls12 As SecurityProtocolType = DirectCast(_Tls12, SecurityProtocolType)
ServicePointManager.SecurityProtocol = Tls12

摘自: https : //support.microsoft.com/en-us/help/3154518/support-for-tls-system-default-versions-included-in-the-.net-framework注意:通過在我的代碼我可以忽略文章中的所有其他內容,包括注冊表編輯和 cs 文件。

正如您從文檔中看到的,TLS 1.2 不在SslProtocols的枚舉中,它已添加到 .NET 4.5 中的枚舉中(感謝 @orhun)。

.NET 3.5 上的 TLS 1.2 兼容性沒有解決方法。

不幸的是,您必須升級到 .NET 4.5 或更高版本才能獲得 TLS 1.2 兼容性。

編輯 10/11/17

我上面的答案不再准確。 2017 年 5 月,Microsoft 發布了一個包以允許 .NET 3.5.1 中的 TLS 1.2

您可以使 TLS 1.2 與 Framework 3.5 一起使用。

微軟已經發布了它的更新。

按照以下步驟操作

  1. 從此處為 Framework 3.5 中的 TLS 安裝支持更新:

https://support.microsoft.com/en-us/help/3154518/support-for-tls-system-default-versions-included-in-the-.net-framework-3.5.1-on-windows-7 -sp1-and-server-2008-r2-sp1

  1. 進入注冊表
    • 在開始輸入regedit
    • 右鍵以管理員身份運行
    • 導航到注冊表項

[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\.NETFramework\\v2.0.50727]

[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\.NETFramework\\v2.0.50727]

  • 右鍵單擊注冊表項,然后單擊導出
  • 命名文件並使用 .reg 擴展名保存(保留它們作為備份,以防您需要恢復它們)

    1. 向注冊表項添加條目
  • 復制保存的文件並重命名
  • 使用文本編輯器打開並為每個鍵添加以下文本(這是針對 64 位操作系統)並保存更改(對於 32 位操作系統,請查看鏈接中的信息)

[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\.NETFramework\\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001

[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\.NETFramework\\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001

  • 雙擊文件並在窗口中單擊是以允許更改

    1. 按照鏈接 - 開發人員指南部分中的指定將代碼添加到您的項目中

我應用了這個解決方案,它對我有用。

我遇到了與 OP 相同的問題 - 舊的 .net 3.5 代碼必須使用 tls 1.2 連接到外部服務。

正如在接受的答案中提到的,MS 發布了一個針對 tls1.2 的補丁。

在此之后,他們發布了 Server 2008(不是 R2)的補丁: https : //cloudblogs.microsoft.com/microsoftsecure/2017/07/20/tls-1-2-support- added-to-windows- server-2008 /

所以應該可以在仍然運行 server 2008 的同時升級到 tls 1.2。

暫無
暫無

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

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