我目前有一个使用.NET 3.5框架的Web应用程序,我想知道它是否与TLS 1.2兼容.我们的代码中没有在哪里指示TLS版本.这是一个遗留应用程序,并且重新编译现在不在桌面上.我没有找到关于您是否可以获得的信息,但我认为兼容性更依赖于操作系统版本.看起来最小值是2008 R2.目标是让paypal在7月1日正确沟通.
D_B*_*ter 30
如前所述.net 3.5.1现在支持TLS 1.2; 但是你不需要@Paulina回答中提到的注册表更改.
我正在使用VS 2008与.net 3.5.30729.4926.我所要做的就是:
添加进口:
Imports System.Security.Authentication
Imports System.Net
Run Code Online (Sandbox Code Playgroud)
将其添加到我的代码(C#):
public const SslProtocols _Tls12 = (SslProtocols)0x00000C00;
public const SecurityProtocolType Tls12 = (SecurityProtocolType)_Tls12;
ServicePointManager.SecurityProtocol = Tls12
Run Code Online (Sandbox Code Playgroud)
VB.net版本:
Const _Tls12 As SslProtocols = DirectCast(&HC00, SslProtocols)
Const Tls12 As SecurityProtocolType = DirectCast(_Tls12, SecurityProtocolType)
ServicePointManager.SecurityProtocol = Tls12
Run Code Online (Sandbox Code Playgroud)
剔除:https://support.microsoft.com/en-us/help/3154518/support-for-tls-system-default-versions-included-in-the-.net-framework注意:通过定义const in我的代码我可以忽略文章中的所有其他内容,包括注册表编辑和cs文件.
mac*_*ura 16
正如您从文档中看到的那样,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的软件包.
小智 10
您可以使TLS 1.2与Framework 3.5一起使用.
微软已经发布了它的更新.
按照以下步骤操作
[HKEY_LOCAL_MACHINE\SOFTWARE \微软\ .NETFramework\V2.0.50727]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node \微软\ .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
双击该文件,然后单击窗口上的"是"以允许更改
我应用了这个解决方案,它对我有用.
我刚刚验证,这就是您在代码中启用 .NET Framework 3.5 中对 TLS 1.2 的支持所需的全部内容:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
Run Code Online (Sandbox Code Playgroud)
我通过在 .NET Framework 3.5 中创建一个单元测试来获取此 HTML 页面进行验证:https://clienttest.ssllabs.com: 8443/ssltest/viewMyClient.html
如果没有上述行,TLS 测试页会显示我正在使用 TLS 1.0,这是 .NET 3.5 的默认设置。
TLS 1.1 与 1.0 一起被弃用,但如果您也想启用它,可以使用此行(不推荐):
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072 | (SecurityProtocolType)768;
Run Code Online (Sandbox Code Playgroud)
“神奇”值 3072 和 768 取自 .NET Framework 4.5 版本的SecurityProtocolType枚举:
我不确定运行此代码的服务器是否必须安装 .NET Framework 4.5 运行时,但可能是这样。
| 归档时间: |
|
| 查看次数: |
33804 次 |
| 最近记录: |