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

根据PCI,我们需要根据http://blog.securitymetrics.com/2015/04/pci-3-1-ssl-and-从2016年6月30日起停止使用SSL和TLS(在某些实施中为1.0和1.1)。 tls.html

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

根据MSDN SecurityProtocolType( https://msdn.microsoft.com/en-us/library/system.net.securityprotocoltype ( v= vs.110).aspx)仅支持.Net Framework 4上的Ssl3和Tls(1.0)或下面。 Tls11和Tls12仅在.Net Framework 4.5 / 4.6中受支持

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

当前使用SSL /早期TLS或愿意在谈判时接受它们并且作为安全控制的持卡人数据环境的一部分的任何通信信道需要被更改,以便它仅使用TLS 1.1(具有经批准的密码套件) )或以上。

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

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

信息补充从SSL和早期TLS迁移

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

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; 

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

  • KB3154​​518 – 可靠性汇总HR-1605 – NDP 2.0 SP2 – Win7 SP1 / Win 2008 R2 SP1
  • KB3154​​519 – 可靠性汇总HR-1605 – NDP 2.0 SP2 – Win8 RTM / Win 2012 RTM
  • KB3154​​520 – 可靠性汇总HR-1605 – NDP 2.0 SP2 – Win8.1RTM / Win 2012 R2 RTM
  • KB3156421 – 1605 HotFix汇总通过适用于Windows 10的Windows Update。

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

 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:///_vti_bin/Authentication.asmx?wsdl'. - There was an error downloading 'http:///_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. 

这引起了我一些真正的问题,并且只是惊呆了这个应用程序还没有更新!