我们已在网站中集成了 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了很多,但还没找到任何解决方案。
请建议
答案 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,因此无需更改任何代码。