[英].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 一起使用。
微軟已經發布了它的更新。
按照以下步驟操作
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\.NETFramework\\v2.0.50727]
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\.NETFramework\\v2.0.50727]
命名文件並使用 .reg 擴展名保存(保留它們作為備份,以防您需要恢復它們)
[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
雙擊文件並在窗口中單擊是以允許更改
我應用了這個解決方案,它對我有用。
我遇到了與 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.