2016-03-09 231 views
1

我们已经在我们的网站中集成了UPS网络服务。最近我们从UPS得到了警告:使用TLS 1.2的PHP SOAP通信

有效的2016年1月26日,UPS的测试环境将需要 TLS 1.2安全协议,并为您的系统 测试将非常具有可用。

2016年5月31日起生效,UPS将要求生产中的TLS 1.2安全协议 。在此日期之后,使用旧协议(TLS 1.1或更高版本)提交给 UPS的任何通信请求都将失败。

我的问题是:

有没有办法使用TLS进行沟通PHP SOAP?我已经搜索了很多,但还找不到任何解决方案。

请建议

+0

[阅读本文](https://bugs.php.net/bug.php?id=65329&edit=1)。 –

回答

0

最后我得到这个issue.It解决方案需要的OpenSSL> 1.0.1或 NSS> 3.15,在我的情况下,我们的服务器都支持SSL版本是NSS/3.19.1 基本ECC因此无需改变任何码。

4

我也遇到过这个问题。我用这个来强制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); 

但我一直有甲基苯丙胺巫婆的问题(在我的开发环境),包括不使用TLS 1.2支持OpenSSL版本。

+0

让我试试........ –

+0

当我打印 $ client - > __ getLastRequestHeaders(); $ client - > __ getLastResponseHeaders(); 与stream_context和没有stream_context都打印相同的结果 –

+0

如何检查我们的请求正在使用tsl1调用。 2协议? –