.NET Framework 3.5和TLS 1.2

我目前有一个使用.NET 3.5框架的Web应用程序,我想知道它是否与TLS 1.2兼容。 我们的代码中没有指示TLS版本。 这是一个遗留应用程序,并且重新编译现在不在桌面上。 我没有找到关于您是否可以获得的信息,但我认为兼容性更依赖于操作系统版本。 看起来最小值是2008 R2。 目标是让paypal在7月1日正确沟通。

从文档中可以看出,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的软件包 。

如上所述.net 3.5.1现在支持TLS 1.2; 但是你不需要@Paulina回答中提到的注册表更改。

我正在使用VS 2008与.net 3.5.30729.4926。 我所要做的就是:

添加import:

 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注意:通过定义const in我的代码我可以忽略文章中的其他内容,包括注册表编辑和cs文件。

您可以使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和服务器-2008-R2-SP1

  1. 转到注册表
    • 在开始时键入regedit
    • 右键单击并以管理员身份运行
    • 导航到注册表项

[HKEY_LOCAL_MACHINE \ SOFTWARE \微软\ .NETFramework \ V2.0.50727]

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\ .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。