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的主要内容,如果未能解决你的问题,请参考以下文章

Payflow Pro:阻止重复发票 ID 不起作用

使用 Payflow Pro 重复收费

带有透明重定向的 PayPal PayFlow Pro - 用户身份验证失败问题/文档

php [PayPal Pro Payflow]更改PayPal Pro Payflow中的信用卡图标

Magento:使用 PaypalUK 模块的 Payflow Pro?

Paypal - PayFlow Pro,使用“交易 ID”获取交易详细信息 [关闭]