不能让古兹尔接受证书



我正在尝试让服务器 A 通过 HTTPS 请求与服务器 B 通信。服务器 B 有一个由我的雇主颁发给我的证书,通过 Safari 和 Chrome 连接到它没有任何问题。

但是,当尝试通过Guzzle将请求从A发送到B时,我收到以下错误:

GuzzleHttp/Exception/RequestException with message 'cURL error 60: SSL certificate problem: 
unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)'

我尝试将证书文件设置为参数([verify => '/path/to/cert.pem']),但首先,我只有.crt.csr.key文件;我尝试通过我在其他地方找到的这些说明制作.pem文件:

(可选)按照以下步骤从私钥中删除密码:
openssl rsa -in server.key -out nopassword.key
注意:输入私钥的密码短语。

合并私钥、公共证书和任何第三方中间证书文件cat nopassword.key > server.pemcat server.crt >> server.pem

注意:根据需要对第三方证书链文件、捆绑包等重复此步骤:

cat intermediate.crt >> server.pem

这不起作用 - 错误是一样的。该请求适用于将"验证"设置为 false,但这显然不是生产选项。

证书不是我通常使用的东西,所以我在弄清楚问题可能出在哪里时遇到了很多麻烦,更不用说修复它了。任何帮助将不胜感激。

编辑我还尝试了Guzzle Curl错误60 SSL无法让本地颁发者无济于事中建议的解决方案。

发生这种情况是因为我在服务器 B 上配置的唯一证书是最终用户证书。

我是新手,所以我的解释可能会有缺陷,但根据我的理解,最终用户证书链接回受信任的证书颁发机构 (CA) 证书,中间有零个或多个中间证书。浏览器可以找出这个证书链,并下载缺少的所需证书;cURL 没有。

因此,解决方案是使用缺少的证书配置服务器 B。如何做到这一点是一个完全不同的问题,所以我不会在这个答案中讨论它。

最新更新