最近我们的PCI DSS扫描失败了,要求我们禁用TLS 1.0(并启用TLS 1.1或1.2)。我在Windows Server 2008 R2上找到了如何执行此操作的说明,但是我们有一个使用.NET Remoting的遗留应用程序(它是一个.NET 2.0 Windows窗体应用程序/ IIS托管的CSLA 1.5数据门户),它没有与新设置进行通信。
我收到以下异常:
我尝试在客户端和服务器中进行各种TLS设置组合配置无济于事。如:
我做了一些研究并发现.NET 4.5 framework supports TLS 1.1 and 1.2,但目前还不清楚是否扩展到.NET远程处理。是吗?
另外,我发现Microsoft's recommendation is to upgrade to 4.5.2。
也就是说,这个应用程序有许多依赖性并且与.NET 4.5.2不兼容,所以知道我是否确实通过升级确实是朝着正确的方向前进,或者我是否应该疯狂地重写这个应用程序(我已经探索过的所有选项都需要进行主要的应用程序更改)。即使构建一个测试应用程序来尝试它也可能具有挑战性,因为我在大约10年内没有直接处理.NET远程处理。
所以,我的问题是 - .NET远程支持是否支持TLS 1.1或1.2?
此外:
我正在使用:
答案 0 :(得分:1)
我在this obscure MSDN blog post中发现了解决方案。要使用TLS 1.2,您必须启用组策略设置以使用FIPS投诉加密算法。
这解决了.NET远程处理,单击部署和MS Web Deploy的问题。不幸的是,它破坏了我的ASP.NET Web应用程序,我still looking for a solution就是这个问题了。
答案 1 :(得分:1)
以下链接为我提供了正确的解决方案。我正在为门户使用.NET远程处理。我的IT部门在我的CSLA服务器上禁用了TLS 1.0,并且我的CSLA库是用.NET 4.0编写的。该修复程序涉及在客户端计算机上编辑注册表。
摘自文章: 要启用TLS协议,您需要为Schannel [1]添加新的注册表项。
为此,请按照以下步骤操作:
通过单击“开始并运行”来启动注册表编辑器。在“运行”字段中输入“ regedit”(不带引号)。突出显示注册表树顶部的“计算机”。首先通过单击文件,然后单击导出来备份注册表。选择文件位置以保存注册表文件。
注意:您将编辑注册表。如果操作不正确,可能会对您的计算机造成不利影响,因此强烈建议您进行备份。
在Windows注册表中启用 SchUseStrongCrypto 属性以用作默认协议:TLS 1.0,TLS 1.1和TLS 1.2如果要确保启用强加密和SSL协议用于您的请求设置为TLS 1.0,TLS 1.1和TLS 1.2,请按照以下步骤操作:
通过单击“开始并运行”来启动注册表编辑器。在“运行”字段中输入“ regedit”(不带引号)。
突出显示计算机在注册表树的顶部。首先通过单击文件,然后单击导出来备份注册表。选择文件位置以保存注册表文件。
注意:您将编辑注册表。如果操作不正确,可能会对您的计算机造成不利影响,因此强烈建议您进行备份。
答案 2 :(得分:0)
这是我在IIS Windows 2012 R2中托管的代码库进行http调用时在.Net 2.0 / .Net 3.5代码中收到的错误The underlying connection was closed: An unexpected error occurred on a send.
。
我对这个问题有了更新的答案。我也在使用Windows 2012 R2(IIS)中托管的CSLA(以及对Web服务器的其他http调用),并且最近关闭了SSL 3.0和TLS 1.0。有一个名为IISCrypto的便捷工具可帮助您设置TLS首选项。我选择了#34;最佳实践"还有未标记的TLS 1.0。
现在要修复.NET 2.0 / 3.5代码,有指令here。它需要将SecurityProtocolTypeExtensions.cs和SslProtocolsExtensions.cs添加到您的项目中,并在调用服务器端代码之前添加以下代码。
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolTypeExtensions.Tls11 | SecurityProtocolTypeExtensions.Tls12;
我希望有人可以解决错误/问题。