我正在尝试使用 Web 服务,我的朋友在 Windows 7 中使用 xampp 进行了测试并且正在工作。他告诉我他安装了一个自签名证书。但我被卡住了,我收到了这个错误:
警告:SoapClient::SoapClient(): SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:1408F119:SSL 例程:SSL3_GET_RECORD:解密失败或 /var/www/project/lib/Zend/Soap/Client 中的错误记录 mac /Common.php 第 51 行
警告:SoapClient::SoapClient(): Failed to enable crypto in /var/www/project/lib/Zend/Soap/Client/Common.php on line 51
警告:SoapClient::SoapClient( https://url.com/webservice?wsdl ): 无法打开流:第 51 行 /var/www/eph_me_113/lib/Zend/Soap/Client/Common.php 中的操作失败
警告:SoapClient::SoapClient(): I/O 警告:未能在 /var/www/eph_me_113/lib/Zend/Soap/Client/Common 中加载外部实体“ https://url.com/webservice?wsdl ” 。第 51 行的 php
我尝试使用 certutils 工具在我的机器上安装 .cert,如下所示:
http://blog.avirtualhome.com/adding-ssl-certificates-to-google-chrome-linux-ubuntu/
之后我在浏览器中看到 wsdl 没有红页警告。浏览器告诉我现在“实体有效”。但我仍然有同样的错误。
我也尝试在我的客户端中添加它。
$opts = array(
'ssl' => array(
'verify_peer' => false,
'allow_self-signed' => true,
'ciphers' => "SHA1"
)
);
$streamContext = stream_context_create($opts);
$params = array(
'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
'stream_context' => $streamContext,
'cache_wsdl' => NULL,
);
$client = new SoapClient($url, $params);
我很困在这里,所以,我希望有人能帮助我。
注意:我使用的是 openssl 1.0.1e 和 Debian 7。