Php 为什么赢了';zend 2 http验证我的ssl证书?

Php 为什么赢了';zend 2 http验证我的ssl证书?,php,ssl,zend-framework2,Php,Ssl,Zend Framework2,我刚刚开始使用Zend 2,它(在本地)运行得非常好,但我无法让它通过https将数据传递到另一台服务器 说到ssl证书,我有点不知所措,我认为这就是问题所在。我有一个证书、一个私钥和一个CA证书-这些证书用于我们服务器上一个vhost域上的ssl证书。位置如下:- SSLCertificateFile /usr/local/psa/var/certificates/cert-#### SSLCACertificateFile /usr/local/psa/var/certificates/ce

我刚刚开始使用Zend 2,它(在本地)运行得非常好,但我无法让它通过https将数据传递到另一台服务器

说到ssl证书,我有点不知所措,我认为这就是问题所在。我有一个证书、一个私钥和一个CA证书-这些证书用于我们服务器上一个vhost域上的ssl证书。位置如下:-

SSLCertificateFile /usr/local/psa/var/certificates/cert-####
SSLCACertificateFile /usr/local/psa/var/certificates/cert-####
在我读到的每个示例中,它们都位于“/etc/ssl/certs/ca bundle.pem”中。我的问题是如何将它们粘在一起创建zend 2想要的这个.pem文件?我尝试创建一个.pem文件,其中包含所有的------BEGIN证书------hash/key------END证书------并将其命名为ca-bundle.pem,但现在Apache向我抛出了“无法设置验证位置”错误,我该如何使其工作?下面是我为适配器编写的代码片段:-

$adapter = new Zend\Http\Client\Adapter\Socket();
$adapter->setStreamContext(array(
'ssl' => array(
    'verify_peer' => true,
    'allow_self_signed' => false,
    'cafile' => '/usr/local/psa/var/certificates/ca-bundle.pem',
    'verify_depth' => 5,
    'CN_match' => 'https://www.mydomain.co.uk'
)
));

$client->setAdapter($adapter);
谢谢


首先,我想你已经做对了:

无法设置验证位置的错误是因为Apache无法找到或读取密钥

解决方案:

  • 验证路径是否正确
  • 确保运行Apache的www用户可以读取pem文件

  • 我在尝试安装Composer时收到了相同的错误。以下命令为我更正了问题

    sudo update-ca-certificates
    
    我已经按照给定的说明在这台服务器上安装了SSL证书,它适用于https连接。只有在尝试安装Composer时,我才看到“无法设置验证位置”错误。我希望这样可以节省别人的研究时间,它花费了我