[英].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.