Payflow Pro和TLS 1.2通过COM DLL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Payflow Pro和TLS 1.2通过COM DLL相关的知识,希望对你有一定的参考价值。
不迟于6月30日,使用Paypal的Payflow Pro集成的每个人都必须使用TLS 1.2。
我们当前的实现是窗口的COM DLL内置在VB6中。为了解决这个限制,我们使用.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的应用程序,我们无法提出更现代的解决方案,因为这需要更多的时间,然后触及每个应用程序的代码(旧的遗留系统)。
我无法获取当前设置,将其更改为paypal调用,然后将其放回原因,因为对此DLL进行了如此多的调用,它可能已经处于另一个调用的1.2状态。
这是我能够强制与Paypal Payflow Pro进行TLS 1.2通信的唯一方法吗?如果是这样,该设置是否会破坏所有其他限制较少的网络流量的通信?我只是没有很好地掌握这个设置的作用以及它会产生什么影响。
我们的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;
}
}
以上是关于Payflow Pro和TLS 1.2通过COM DLL的主要内容,如果未能解决你的问题,请参考以下文章
带有透明重定向的 PayPal PayFlow Pro - 用户身份验证失败问题/文档
php [PayPal Pro Payflow]更改PayPal Pro Payflow中的信用卡图标