2017-06-02 88 views
0

不迟于6月30日,每个使用Paypal的Payflow Pro集成的人都必须使用TLS 1.2。Payflow Pro和通过COM DLL的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只有这个时候以支持其他协议。

我只是不确定这是怎么做到服务器设置。 PayPal强制TLS 1.2然后会阻止其他流量进入?

我目前没有这个实现的任何选项。因为我们有数百个引用这些DLL的应用程序,所以我们不能提出更现代的解决方案,因为它需要更多的时间,然后触及每个应用程序的代码(旧的传统系统)。

我不能抓住当前设置,更改为贝宝的呼叫,然后把它放回去,因为有这么多的调用该DLL文件,它可能已经从另一个呼叫1.2状态。

这是我将能够强制与PayPal Payflow Pro进行TLS 1.2通信的唯一方式,如果是这样,那么这种设置是否会破坏所有其他限制性较少的Web通信的通信?我只是没有很好地掌握这个设置的作用以及它会影响到什么。

+0

好奇 - 你有没有找到解决这个问题的方法?我们可能会遇到类似的问题。 –

+0

@MikeSmith我们的IT团队对此没有太大的帮助,所以我不得不通过代码处理它。我为我所做的事添加了对这个主题的回答。 –

回答

0

我们的IT团队对此没有太大的帮助,所以我不得不通过代码处理它。我敢肯定有办法让服务器在默认情况下做到这一点,但因为我无法得到任何内部的帮助,这是我做的:

我所做的就是确保TLS 1.2是当在DLL中实例化我的类的实例时启用,如下所示:

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; 
    } 
} 
+0

注意:这个想法在这里找到:http://stackoverflow.com/questions/28286086/default-securityprotocol-in-net-4-5 –