首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >确保SoapClient在PHP5.5中发送TLS1.2请求

确保SoapClient在PHP5.5中发送TLS1.2请求
EN

Stack Overflow用户
提问于 2019-06-01 19:28:44
回答 1查看 2.5K关注 0票数 1

我们在一个使用PHP5.5的旧代码库上有一个网站(目前),我们使用SoapClient的一个集成告诉我们,他们很快就会禁止使用TLS < 1.2。

目前,我们的连接非常简单:

代码语言:javascript
复制
$client = new SoapClient($soap_url);

我们必须做什么才能确保只发送TLS 1.2请求?我找到了this answer,但我不完全确定这是否仍然适用于我们的情况;另外,也不确定我们是否应该强制使用SOAP1.1?

我们这一端有哪些要求来确保我们发送TLS 1.2请求?

EN

回答 1

Stack Overflow用户

发布于 2019-06-11 05:33:27

然后,服务器将选择它和客户端都支持的版本。因此,假设您的客户端系统支持TLS1.2,那么您可能不需要执行任何操作。

在1.0.1中,OpenSSL增加了对TLS1.2的支持。如果你使用的是el6或更高版本,并且更新了你的包,你应该没问题。

代码语言:javascript
复制
# openssl version
> OpenSSL 1.0.2k-fips  26 Jan 2017

您可以使用此nmap命令检查服务器支持的协议/密码:

代码语言:javascript
复制
 nmap --script ssl-enum-ciphers -p 443 stackoverflow.com

现在,如果您想在使用TLS1.1时测试失败,或者强制使用密码之类的东西,那么您将需要使用PHP的stream_context_create

使用下面的代码,您可以通过将crypto_method设置为STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT来强制使用to 1.2。

代码语言:javascript
复制
<?php
$options = ['trace' => 1,
            'soap_version' => SOAP_1_2,
            'exceptions' => true,
            'location' => 'https://stackoverflow.com/foo',
            'uri' => "https://stackoverflow.com/bar",
            'stream_context' => stream_context_create([
                'ssl'=> [
                    'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT,
                    'ciphers' => 'SHA256'                        
                 ]
             ])];

$client = new SoapClient(null, $options);

try {
    $response = $client->getFoo();    
} catch (\Exception $e){    
    var_dump($client->__getLastRequest());
    var_dump($client->__getLastResponse());
    throw $e;
}


//OR, an even easier test with out a Soap Client...
$opts = [
         'ssl'=> [
             'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT,
             'ciphers' => 'SHA256',
             'verify_peer' => false,
             'verify_peer_name' => false
         ]
     ];

$context = stream_context_create($opts);
$fp = fopen('https://stackoverflow.com', 'r', false, $context);

错误可能是这样的:

fopen():无法启用加密

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56406312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档