我目前有一个使用.NET 3.5框架的Web应用程序,我想知道它是否与TLS 1.2兼容。我们的代码中没有在哪里指示TLS版本。这是一个遗留应用程序,并且重新编译现在不在桌面上。我没有找到关于您是否可以获得的信息,但我认为兼容性更依赖于操作系统版本。看起来最小值是2008 R2。目标是让paypal在7月1日正确沟通。
答案 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已发布更新。
按照以下步骤
[HKEY_LOCAL_MACHINE \ SOFTWARE \微软\ .NETFramework \ V2.0.50727]
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\ .NETFramework \ V2.0.50727]
为文件命名并使用.reg扩展名保存(保留它们作为备份,以备需要恢复时)
[HKEY_LOCAL_MACHINE \ SOFTWARE \微软\ .NETFramework \ V2.0.50727] " SystemDefaultTlsVersions" = DWORD:00000001
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\ .NETFramework \ V2.0.50727] " SystemDefaultTlsVersions" = dword:00000001
双击该文件,然后在窗口中单击是以允许更改
我应用了这个解决方案,它对我有用。
答案 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。