C# 用于.Net 3.5上Web服务客户端应用程序的SSL和过时的TLS(1.0和1.1)

C# 用于.Net 3.5上Web服务客户端应用程序的SSL和过时的TLS(1.0和1.1),c#,.net,ssl,pci-compliance,tls1.2,C#,.net,Ssl,Pci Compliance,Tls1.2,根据PCI,我们需要从2016年6月30日起停止使用SSL和TLS(在某些实施中为1.0和1.1),根据 我们在.NET3.5上构建了一个客户端应用程序,它使用HttpWebRequest对象连接到web服务 根据MSDN,SecurityProtocolType()仅支持.Net Framework 4或更低版本上的Ssl3和Tls(1.0)。Tls11和Tls12仅在.Net Framework 4.5/4.6中受支持 这是否意味着要进入持卡人数据环境并完全符合pci,我们需要将所有应用程

根据PCI,我们需要从2016年6月30日起停止使用SSL和TLS(在某些实施中为1.0和1.1),根据

我们在.NET3.5上构建了一个客户端应用程序,它使用HttpWebRequest对象连接到web服务

根据MSDN,SecurityProtocolType()仅支持.Net Framework 4或更低版本上的Ssl3和Tls(1.0)。Tls11和Tls12仅在.Net Framework 4.5/4.6中受支持


这是否意味着要进入持卡人数据环境并完全符合pci,我们需要将所有应用程序升级到.Net 4.5/4.6,并且只允许Tls12 SecurityProtocolType使用HttpWebRequest连接到外部web服务

当前使用SSL/early TLS或愿意在协商时接受SSL/early TLS且作为安全控制的持卡人数据环境的一部分的任何通信通道都需要更改,以便仅使用TLS 1.1(带有经批准的密码套件)或更高版本

您需要在.Net 4.5或更高版本下重新编译(默认情况下未启用TLS 1.2,因此需要更改代码),或者使用支持所需协议的第三方库

请注意,如果您知道您的系统正在使用SSL/早期TLS,则必须创建风险缓解计划/文档


微软已经为此发布了不可思议的补丁

  • KB3154518-可靠性汇总HR-1605-NDP2.0 SP2-Win7 SP1/Win 2008 R2 SP1
  • KB3154519-可靠性汇总HR-1605-NDP 2.0 SP2-Win8 RTM/Win 2012 RTM
  • KB3154520-可靠性汇总HR-1605-NDP 2.0 SP2-Win8.1RTM/Win 2012 R2 RTM
  • KB3156421-1605通过Windows 10的Windows Update进行的修补程序汇总

实际上,您可以在低于4.5的框架中使用TLS1.2(至少我在.NET Framework 4客户端中管理过它)。您可以使用此协议的id绕过协议,而不是使用classic命令将协议设置为Tls12

  ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

他们似乎没有做的一件事是更新wsdl.exe以支持TLS1.1或1.2。如果尝试将wsdle.exe form.Net 4.7指向不支持TLS1.0的web服务,会发生这种情况:

Microsoft (R) Web Services Description Language Utility
[Microsoft (R) .NET Framework, Version 4.7.2558.0]
Copyright (C) Microsoft Corporation. All rights reserved.
Error: There was an error processing 'http://<some.domain>/_vti_bin/Authentication.asmx?wsdl'.
  - There was an error downloading 'http://<some.domain>/_vti_bin/Authentication.asmx?wsdl'.
  - The underlying connection was closed: An unexpected error occurred on a send.
  - Authentication failed because the remote party has closed the transport stream.
Microsoft(R)Web服务描述语言实用程序
[Microsoft(R).NET Framework,版本4.7.2558.0]
版权所有(C)微软公司。版权所有。
错误:处理“”时出错http:///_vti_bin/Authentication.asmx?wsdl'.
-下载“”时出错http:///_vti_bin/Authentication.asmx?wsdl'.
-基础连接已关闭:发送时发生意外错误。
-身份验证失败,因为远程方已关闭传输流。

这给我带来了一些真正的问题,我只是惊讶于这个应用程序还没有更新

微软是否有可能为.Net 2.0及以上版本发布补丁,以支持TLS 1.2的安全性?原因是大多数公司都没有计划在2016年6月30日之前将持卡人数据环境中的所有应用程序重新编译到.Net 4.5的资源。我个人非常怀疑,他们的解决方案是在.Net 4.5中实现TLS 1.1+。以.Net 4.6为目标重新编译不需要代码更改,默认情况下,as.Net 4.6启用TLS 1.2。对于大多数针对.Net 3.5或更高版本的应用程序,通过修改注册表可以完全避免重新编译(请参阅上的说明)。这将更改默认行为。明确指定安全协议的应用程序仍然需要更改代码。这仅在服务器安装了Framework 4.5的情况下有效。@Brian我在.NET Framework 4客户端上运行它没有问题Windows Update附带的一些热修复程序可能在未安装Framework 4.5的情况下添加了支持。或者Windows Update安装了Framework 4.5,您没有注意到。这是我唯一做的更改,设置
SecurityProtocol=TLS11
,然后可以连接并从Web服务(测试环境)获得响应。这够了吗?