C# PCI 3.1法规遵从性和带SSL的.net C应用程序

C# PCI 3.1法规遵从性和带SSL的.net C应用程序,c#,.net,ssl,pci-compliance,C#,.net,Ssl,Pci Compliance,在用户在其系统上应用有关SSL 3.0和TLS 1.0传入和传出流量的PCI 3.1标准后,如何修复使用SSL连接到外部服务器的损坏的.net 3.5,C应用程序?我想在问题开始出现之前,在这里说明这一点。我最近让一个客户机将其PCI合规性升级到3.1,在该版本中,SSL 3.0或TLS 1.0流量不再允许进入或离开其系统。相反,TLS 1.1和1.2目前是安全连接的主要驱动因素。如果您有一个.net C应用程序连接外部HTTPS站点或使用安全SQL连接到服务器,那么您需要做几件事 首先,将应用

在用户在其系统上应用有关SSL 3.0和TLS 1.0传入和传出流量的PCI 3.1标准后,如何修复使用SSL连接到外部服务器的损坏的.net 3.5,C应用程序?

我想在问题开始出现之前,在这里说明这一点。我最近让一个客户机将其PCI合规性升级到3.1,在该版本中,SSL 3.0或TLS 1.0流量不再允许进入或离开其系统。相反,TLS 1.1和1.2目前是安全连接的主要驱动因素。如果您有一个.net C应用程序连接外部HTTPS站点或使用安全SQL连接到服务器,那么您需要做几件事

首先,将应用程序.net版本更新为4.5或更高版本。默认情况下,4.5之前的net版本不能使用TLS 1.1和1.2。如果您有一个小应用程序,并且希望保留您的.net 3.5,您可以让客户端使用以下链接更新其PC:

其次,如果您使用.NET4.5,则在与外部站点建立安全连接之前,需要在代码中添加一行代码。对于4.6或更高版本,建议TLS 1.2已经是默认版本,可能不需要此附加代码。在使用SSL 3.0等其他方法进行任何尝试之前,此代码将告诉您的.net 4.5应用程序默认为TLS 1.1或TLS 1.2

System.Net.ServicePointManager.SecurityProtocol =  
    SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;  

我希望这有帮助。以下是PCISecurityStandards.org的一份文件,描述了2018年6月3.1合规的截止日期:

这是一篇博客文章,不是问题。为了符合SO的格式,提出一个问题,然后在下面回答。可能重复的@ShaneLS TLS1.2支持与PCI无关。这与客户端的网络无关,它与客户端调用的服务有关。公共互联网不符合PCI3.1,但GDS和航空公司自2016年以来要求TLS1.2。@PanagiotisKanavos不完全正确,与服务器建立连接的客户端在协商连接时必须公布它支持TLS1.1或1.2,否则连接将不使用它。具有.NET早期版本的客户端不会自动播发TLS1.1或1.2,即使操作系统支持它们。在符合PCI标准的环境中,两端都必须只支持TLS1.1或1.2,其中1.2是首选。@ShaneLS是的,在此之前,您的应用程序已经无法调用迁移到TLS1.2的所有服务。无论如何,博客服务也不是这样。这一点已经得到了回答。如果你搜索TLCS1.2,你会得到245个结果不,这根本没有帮助。它会产生噪音。问答网站也是如此,而不是博客服务。在过去的几年里,这个问题已经被问了几十次了。它也不准确-因为4.6 TLS12是默认值