Php 如何使用SoapClient强制TLS1.2?

Php 如何使用SoapClient强制TLS1.2?,php,soap,soap-client,tls1.2,Php,Soap,Soap Client,Tls1.2,我正在使用一个PSP,最近它只支持TLS1.2(根据PCI-DSS) 在php7应用程序中,我可以连接到他们的SOAP API。然而,由于他们的升级,我得到了一个SSL错误,表明他们的服务器不支持我的TLS版本。我运行了一个wireshark,可以确认只有一个客户端地狱o,所以服务器hello在TLS1.0上 我正在使用以下代码: $this->soapClient = new SoapClient('some/wsdl'), [ 'location' => 'https:/

我正在使用一个PSP,最近它只支持TLS1.2(根据PCI-DSS)

在php7应用程序中,我可以连接到他们的SOAP API。然而,由于他们的升级,我得到了一个SSL错误,表明他们的服务器不支持我的TLS版本。我运行了一个wireshark,可以确认只有一个
客户端地狱
o,所以
服务器hello
在TLS1.0上

我正在使用以下代码:

$this->soapClient = new SoapClient('some/wsdl'), [
    'location' => 'https://endpoint.of.server',
    'soap_version' => SOAP_1_1,
    'stream_context' => stream_context_create([
        'ssl' => [
            'local_cert' =>  '/path/to/client.crt',
            'crypto_method' =>  STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
        ],
    ])
]);
但是,此代码仍然使用TLS 1.0,而不是所需的TLS 1.2

版本

OpenSSL 1.1.0h 2018年3月27日


PHP7.1.6-1~ubuntu16.04.1+deb.sury.org+1(cli)(NTS)

事实证明,上述代码是100%正确的

在我的例子中,错误在证书的某个地方。由于未知的原因,我们自行生成的SSL客户端证书不能很好地处理TLS1.2。在我们生成了一个新的证书之后,一切都像魔术一样工作

我尝试/验证过的东西

  • 确保您有受支持的
    openssl
    verion(>=1.0.1)
  • 考虑手动指定密码
  • 使用Wireshark调试连接以验证协议

另外,看看

嗨,乔治,你找到这个问题的答案了吗?我有一个类似的设置和相同的问题。谢谢