使用TLS 1.2进行PHP SOAP通信

时间:2016-03-09 09:19:01

标签: php web-services soap tls1.2 ups

我们已在网站中集成了 UPS网络服务。最近我们收到UPS的警告:

  

自2016年1月26日起,UPS测试环境将要求   TLS 1.2安全协议,将适用于您的系统   测试

     

自2016年5月31日起,UPS将要求TLS 1.2安全协议   在生产中。在该日期之后,提交的任何通信请求   使用旧协议(TLS 1.1 orearlier)的UPS将会失败。

我的问题是:

有没有办法使用TLS传递PHP SOAP?我已经google了很多,但还没找到任何解决方案。

请建议

2 个答案:

答案 0 :(得分:8)

我也遇到了这个问题。我用它来强制进行TLS通信。

$mode = array
(
    'soap_version' => 'SOAP_1_1',  // use soap 1.1 client
    'trace' => 1,
    'stream_context' => stream_context_create(array(
        'ssl' => array(
            'crypto_method' =>  STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
        )
     ))
);

// initialize soap client
$client = new SoapClient($this->wsdl, $mode);

但我总是遇到问题(在我的开发环境中),MAMP包含一个没有TLS 1.2支持的openssl版本。

答案 1 :(得分:1)

  

最后我得到了解决这个问题的方法。它需要OpenSSL> 1.0.1或   NSS> 3.15在我的情况下,我们的服务器支持SSL版本是NSS / 3.19.1   基本ECC,因此无需更改任何代码。