.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;
微软为此做了不可思议的发布补丁
- KB3154518 – 可靠性汇总HR-1605 – NDP 2.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 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.
这引起了我一些真正的问题,并且只是惊呆了这个应用程序还没有更新!
- 默认文件名SaveFileDialog
- C#和MySQL .NET Connector – 在通用类中防止SQL注入攻击的任何方法?
- DatagridView如何为每列提供不同的行数?
- 在WPF中制作图表的最佳方法是什么? (或者一般来说也适用于WPF)
- 如何在StackTrace中获取.NET中抛出的exception中的行号以显示
- 如何获取Azure CloudBlobContainer的大小
- 自定义GroupBox,带有自定义TextColor,BorderColor和Transparent BackColor
- 使用FakeItEasy,是否可以创建一个采用generics类型参数的虚拟对象
- C#:在这种情况下,如何过滤掉不需要的命名空间?