.NET Framework 3.5和TLS 1.2

时间:2017-04-05 20:03:10

标签: c# asp.net

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

4 个答案:

答案 0 :(得分:26)

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

答案 1 :(得分:15)

docs可以看出,TLS 1.2不在SslProtocols的枚举中,它被添加到.NET 4.5的枚举中(感谢@orhun)。

.NET 3.5上的TLS 1.2兼容性没有解决方法。

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

编辑10/11/17

我的上述答案不再准确。 In May of 2017, Microsoft released a package to allow TLS 1.2 in .NET 3.5.1

答案 2 :(得分:9)

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

Microsoft已发布更新。

按照以下步骤

  1. 从此处安装Framework 3.5中的TLS支持更新:
  2. 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
      • 右键单击并以管理员身份运行
      • 导航到注册表项
    2. [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 \微软\ .NETFramework \ V2.0.50727] " SystemDefaultTlsVersions" = DWORD:00000001

      [HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\ .NETFramework \ V2.0.50727] " SystemDefaultTlsVersions" = dword:00000001

      • 双击该文件,然后在窗口中单击是以允许更改

        1. 按照链接 - 开发人员指南部分
        2. 中的说明向项目添加代码

      我应用了这个解决方案,它对我有用。

答案 3 :(得分:0)

我遇到的问题与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。