使用TLS 1.2的PHP SOAP通信

Min*_*tel 5 php soap web-services ups tls1.2

我们在我们的网站上集成了UPS Web服务.最近我们从UPS得到警报:

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

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

我的问题是:

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

请建议

小智 9

我也遇到了这个问题.我用它来强制进行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);
Run Code Online (Sandbox Code Playgroud)

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

  • 如何检查我们的请求正在使用 tsl1 调用。2 协议? (3认同)

Min*_*tel 2

最后我得到了这个问题的解决方案。它需要 OpenSSL > 1.0.1 或 NSS > 3.15,在我的例子中,我们的服务器支持 SSL 版本是 NSS/3.19.1 Basic ECC,所以不需要更改任何代码。