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

问题描述 投票:0回答:1

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

我尝试使用自签名证书通过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吗?

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

php soap https certificate self-signed
1个回答
2
投票

我有一个非常类似的问题,我在流上下文中添加了'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的攻击。在将此作为解决方案之前,请确保完全了解安全问题。

© www.soinside.com 2019 - 2024. All rights reserved.