PHP SoapClient over selfsigned certificate,SOAP-ERROR:解析WSDL:无法从'https://加载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP SoapClient over selfsigned certificate,SOAP-ERROR:解析WSDL:无法从'https://加载相关的知识,希望对你有一定的参考价值。

我浏览网了三天,我仍然无法解决我的问题...这就是为什么我要求你的帮助:)

我尝试使用自签名证书通过https调用Web服务,我收到以下错误:SOAP-ERROR:解析WSDL:无法从'https://加载...

我的代码:

$streamContext = stream_context_create(array(
    'ssl' => array(
        'verify_peer' => false,
        'allow_self_signed' => true
     )
));
$client = new SoapClient("https://DOMAIN/ws.php?wsdl", array(
    'trace' => true,
    'stream_context' => $streamContext
));
$client->method($params);

我试过了 :

  • 更改“verify_peer”和“allow_self_signed”选项的值;
  • 将“ssl”键替换为stream_context数组中的“https”;
  • 在本地加载WSDL文件,但是我收到以下错误:无法连接到主机(我的端点:https://DOMAIN/ws.php);
  • 清除我的客户端缓存;
  • 使用Zend_Soap_Client和nusoap库。

此外,我使用以下命令“ping DOMAIN”和“telnet DOMAIN 443”检查了客户端和服务器之间的连接,一切正常。

似乎忽略了“stream_context”选项或问题出在其他地方?!这是一个php Bug吗?

所有建议将不胜感激。谢谢

答案

我有一个非常类似的问题,我在流上下文中添加了'verify_peer_name' => false。所以...

$streamContext = stream_context_create(array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
     )
));

编者注:禁用SSL验证具有安全隐患。如果不验证SSL / HTTPS连接的真实性,恶意攻击者可以冒充受信任的端点(例如GitHub或其他一些远程Git主机),并且您将容易受到Man-in-the-Middle Attack的攻击。在将此作为解决方案之前,请确保完全了解安全问题。

以上是关于PHP SoapClient over selfsigned certificate,SOAP-ERROR:解析WSDL:无法从'https://加载的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将元素名称映射到 php 类(SoapClient)

PHP 中的 SoapClient 错误回退

PHP SoapClient 超时

php调用webservice报错Class 'SoapClient' not found(转)

PHP 5 soapClient 结果为空 __getLastResponse 显示正确的 XML

PHP SoapClient - 使用变量创建请求