【问题标题】:SoapServer::SoapServer(): SSL operation failed with code 1SoapServer::SoapServer(): SSL 操作失败,代码为 1
【发布时间】:2018-02-08 13:24:05
【问题描述】:

我已经通过 Yii 公开了几个 Web 服务。从 PHP 5.5.x 升级到 PHP 5.6.33 后,我遇到以下错误

SoapServer::SoapServer(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

该错误发生在 framework/web/services/CWebService.php (1.1.19) 的第 166 行,到目前为止我还没有找到任何解决方法,options 属性受到保护并且不知道如何绕过这个问题,但http://php.net/manual/en/soapserver.soapserver.php 似乎仍然不支持与 SoapClient 相同的选项

            $options["stream_context"] = stream_context_create([ 
                "ssl" => [ 
                    // set some SSL/TLS specific options 
                    "verify_peer" => false, 
                    "verify_peer_name" => false, 
                    "allow_self_signed" => true 
                ]]); 

【问题讨论】:

  • 看起来没有办法像 SoapClient 一样禁用 SoapServer 的证书验证 :-( 这使得开发更加困难。

标签: php web-services yii wsdl2php


【解决方案1】:

我们最终确定这是服务器配置问题。生产服务器没有遇到这个问题,因为证书是从已知机构签署的,但是在私有服务器中,我们需要编辑 php.ini 文件

openssl.cafile = "/etc/path/to/pem/file.pem"

【讨论】:

    【解决方案2】:

    当我尝试在我的开发环境中创建 SoapServer 时,我在使用 PHP7.2 的 Linux (Ubuntu) 上也遇到了错误。 如果您不想全局设置 PHP openssl.cafile,只需将您的根 CA 复制到正确的文件夹并更新证书:

    sudo cp my_root_ca.pem /usr/share/ca-certificates/my_root_ca.crt
    sudo dpkg-reconfigure ca-certificates
    sudo update-ca-certificates
    

    在重新配置 ca-certificates 时,您需要选择自己的证书并激活它。 (如果您在开发环境中不再需要根 CA,只需重新配置证书,从列表中取消选择您的 CA,最后更新证书。)

    【讨论】:

      猜你喜欢
      • 2015-04-27
      • 2013-08-25
      • 1970-01-01
      • 2021-05-14
      • 2016-09-07
      • 2015-01-21
      • 2016-12-19
      • 2018-03-07
      • 1970-01-01
      相关资源
      最近更新 更多