Web Services 使用TLS 1.2的PHP SOAP通信

1sbrub3j  于 2022-11-15  发布在  PHP
关注(0)|答案(2)|浏览(180)

我们已将UPS Web Service整合到我们的网站中。最近我们收到UPS的提醒:
自2016年1月26日起,UPS测试环境将需要TLS 1.2安全协议,并将可用于您的系统测试。
自2016年5月31日起,UPS将要求在生产中使用TLS 1.2安全协议。在该日期之后,任何使用旧协议(TLS 1.1或更早版本)提交给UPS的通信请求都将失败。
我的问题是:
有没有什么方法可以使用TLS与PHP SOAP进行通信?我已经在谷歌上搜索了很多,但还没有找到任何解决方案。
请建议

brqmpdu1

brqmpdu11#

我也遇到了这个问题。下面是我用这个来强制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,其中包括一个版本的openssl没有tls1.2支持。

cnjp1d6j

cnjp1d6j2#

最后我得到了这个问题的解决方案。它需要OpenSSL〉1.0.1或NSS〉3.15,在我的情况下,我们的服务器支持SSL版本是NSS/3.19.1基本ECC,所以不需要改变任何代码。

相关问题