Payflow Pro和TLS 1.2通过COM DLL

时间:2017-06-02 21:50:41

标签: asp.net com payflowpro

不迟于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通信的唯一方式吗?如果是这样,该设置是否会破坏所有其他限制较少的网络流量的通信?我只是不能很好地掌握这个设置的作用以及它会产生什么影响。

1 个答案:

答案 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;
    }
}