繁体   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