繁体   English   中英

PHP7 cURL和SOAP请求SSL失败

[英]PHP7 cURL and SOAP request SSL failing

我在带有ubuntu 16.04的无所事事的VM中使用PHP 7.0.25

我需要对此SOAP API发出请求: https : //ws.ocasa.com/testecommerce/service.asmx?wsdl

php curl和SoapClient都失败了

使用SoapClient我正在执行此操作(也尝试了完全不使用任何选项,而只尝试了cache_wsdl部分):

$options = array(
    'cache_wsdl' => 0,
    'trace' => 1,
    'stream_context' => stream_context_create(array(
          'ssl' => array(
               'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true
          )
    ))
);

$wsdl = 'https://ws.ocasa.com/testecommerce/service.asmx?wsdl';
$client = new \SoapClient( $wsdl, $options);

给我这个错误:

[SoapFault]
SOAP错误:解析WSDL:无法从' https://ws.ocasa.com/testecommerce/service.asmx?wsdl '加载:无法加载外部实体“ https:
//ws.ocasa.com/testecommerce/service.asmx?wsdl“

使用php curl我最终得到此错误:

与ws.ocasa.com连接的未知SSL协议错误:443

我无法从linux curl命令行获取页面,没有问题(当然是从VM内部)

curl -I https://ws.ocasa.com/testecommerce/service.asmx?wsdl -v

SSL连接正在使用TLS1.0 / RSA_3DES_EDE_CBC_SHA1

我测试了添加

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

并且还尝试添加CA证书:(还尝试将其添加到php.ini中)

curl_setopt($ch, CURLOPT_CAINFO, '/vagrant/cacert.pem');

非常奇怪的是,我可以卷曲其他HTTPS网站而不会遇到问题,例如secure.php.net usgin php curl。

另外,没有可用的“ http”版本来解决整个SSL问题。

有任何想法吗? 我可能缺少某种依赖性? openssl已安装。

谢谢你的时间。

好吧,我有点找到解决方案了...

使用curl( CURLOPT_SSLVERSION有所作为

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $wsdl);
curl_setopt($ch, CURLOPT_POSTFIELDS,  $xml); // $xml is the envelope (string)
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_0);

即使使用SOAP_SSL_METHOD_TLS选项,我也无法使SoapClient正常工作。 我将其标记为已解决,但是如果有人发现如何使其与SoapClient一起使用,那将是真正的答案。

帮助了我提出请求(不是ssl部分)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM