不迟于6月30日,使用Paypal的Payflow Pro集成的每个人都必须使用TLS 1.2。
我们当前的实现是在VB6中内置的窗口的COM DLL。为了解决这个限制,我们使用.NET framework 4.6.1在C#.NET中重建它们
我重建了它们并开始测试并注意到我的DLL没有通过TLS 1.2进行通信
我们的问题是4.6.1默认支持TLS 1.2 ...除非我们将它们用作COM DLL。他们似乎采用了服务器设置,因此我可以看到他们所使用的服务器正在使用SSL和TLS。
根据其他SO建议,我可以设置ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
是的,这有效,除了......
所以这是一个静态设置,实质上是在"服务器"上更改了这个值。作为一个整体。
我们需要将这些DLL发布到我们所有的Web服务器,这些服务器此时需要支持其他协议,即使Paypal要求仅通过TLS 1.2进行通信。
我只是不确定这对服务器设置到底做了什么。正在强制TLS 1.2 for Paypal然后阻止其他流量进入?
此时我暂不提供此实施方案。它们必须是DLL来替换旧的,因为我们有数百个应用程序引用这些DLL,我们无法提出更现代的解决方案,因为这需要更多的时间,然后触及每个应用程序&#39 ; s代码(旧遗留系统)。
我无法获取当前设置,将其更改为paypal调用,然后将其放回原因,因为对此DLL的调用很多,它可能已经处于另一个调用的1.2状态。
这是我能够通过Paypal Payflow Pro强制进行TLS 1.2通信的唯一方式吗?如果是这样,该设置是否会破坏所有其他限制较少的网络流量的通信?我只是不能很好地掌握这个设置的作用以及它会产生什么影响。
答案 0 :(得分:0)
我们的IT团队对此没有太大帮助,所以我必须通过代码处理它。我非常确定有一种方法可以让服务器默认执行此操作,但由于我无法获得任何内部帮助,这就是我所做的:
我所做的是确保在DLL中实例化我的类的实例时启用了TLS 1.2,如下所示:
public myClassConstructor()
{
// instantiate class process...
// Call the process to be sure TLS 1.2 is enabled
HelperMethods.SetSecurityProtocol();
}
public static void SetSecurityProtocol()
{
// Verify if TLS 1.2 is enabled on the server. If not, add it to the current collection of available protocols
if (!System.Net.ServicePointManager.SecurityProtocol.HasFlag(System.Net.SecurityProtocolType.Tls12))
{
System.Net.ServicePointManager.SecurityProtocol |= System.Net.SecurityProtocolType.Tls12;
}
}