gpt4 book ai didi

php - Zend 框架在哪里保存默认证书存储?

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:33 25 4
gpt4 key购买 nike

我有两个环境,一个是开发环境,另一个是反射(reflect)开发环境的生产环境。

在开发环境中,我尝试使用 zend 框架连接到 ssl 服务器,但收到以下无意义的错误消息;

Unable to Connect to ssl://test.server.com:443. Error #0:

使用 tcpdump,我发现错误是由未知 CA 引起的。

这是我的代码:

require_once 'Zend/Http/Client.php';
$uri = 'https://test.server.com';
$client = new Zend_Http_Client($uri);
$client->setHeaders(Zend_Http_Client::CONTENT_TYPE, 'application/json');
$response = $client->setRawData($json)->setEncType('application/json')->request('PUT');

我没有指定 sslcapath,但是我的生产系统没有它也能正常工作。当我 - 设置 - 设置 sslcapath 时,

$client = new Zend_Http_Client($uri, array(
'sslcapath' => '/etc/ssl/certs'
));

我仍然得到错误。所以我认为 Zend 在某处使用证书存储(或者我错误地设置了 sslcapath),我想检查 CA 是否在开发环境的证书存储中。

我的 CA 位于两个系统的 /etc/ssl/certs 中。

还有什么可以解释为什么它在生产系统上工作,而不是在开发系统上工作,尽管它们是一样的?

最佳答案

根据您给出的代码,您还没有定义 Zend_Http_Client_Adapter。然后配置将根据您选择的适配器而有所不同。

https://framework.zend.com/manual/1.11/en/zend.http.client.adapters.html

使用套接字的例子:

$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Socket',
'sslcert' => '/etc/ssl/certs'
);

// Instantiate a client object
$client = new Zend_Http_Client($uri, $config);
$client->setHeaders(Zend_Http_Client::CONTENT_TYPE, 'application/json');
$response = $client->setRawData($json)->setEncType('application/json')->request('PUT');

您可以根据需要或喜欢的适配器使用其他适配器。

关于php - Zend 框架在哪里保存默认证书存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44808095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com