SoapServer::SoapServer(): SSL 操作失败,代码为 1
SoapServer::SoapServer(): SSL operation failed with code 1
我已经通过 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 行,到目前为止我还没有找到任何解决方法,选项 属性 受到保护并且不不知道如何绕过这个问题,但 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
]]);
我们最终确定这是服务器配置问题。生产服务器没有遇到这个问题,因为证书是由已知机构签署的,但是在私有服务器中,我们需要编辑 php.ini 文件
openssl.cafile = "/etc/path/to/pem/file.pem"
当我尝试在我的开发环境中创建 SoapServer 时,我在 Linux (Ubuntu) 和 PHP7.2 上也遇到了错误。
如果您不想全局设置 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 证书时,您需要 select 您自己的证书并激活它。
(如果您在开发环境中不再需要根 CA,只需再次重新配置证书,从列表中取消select您的 CA,最后更新证书。)
我已经通过 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 行,到目前为止我还没有找到任何解决方法,选项 属性 受到保护并且不不知道如何绕过这个问题,但 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
]]);
我们最终确定这是服务器配置问题。生产服务器没有遇到这个问题,因为证书是由已知机构签署的,但是在私有服务器中,我们需要编辑 php.ini 文件
openssl.cafile = "/etc/path/to/pem/file.pem"
当我尝试在我的开发环境中创建 SoapServer 时,我在 Linux (Ubuntu) 和 PHP7.2 上也遇到了错误。 如果您不想全局设置 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 证书时,您需要 select 您自己的证书并激活它。 (如果您在开发环境中不再需要根 CA,只需再次重新配置证书,从列表中取消select您的 CA,最后更新证书。)