SSL 证书不适用于 Curl "unable to get local issuer certificate"

SSL Certificate Does Not Work With Curl "unable to get local issuer certificate"

我的网络服务器设置为强制使用 HTTPS,因为将来我正在从事涉及用户数据传输的项目,因此需要加密。但现在我只是在测试。不幸的是,我遇到了一个问题,无论我尝试什么,我似乎都无法弄清楚!

我正在使用自定义服务器引擎(当然是用 C 语言编写的,以获得最大速度!),SSL 是使用安装在最新 Ubuntu 服务器上的 openssl 实现的。如果相关,我可以提供一些代码,但问题是......它在 Chrome、Edge 和 Firefox 中 100% 完美运行,在 PC、Mac、Android 的所有内容上进行了测试,甚至我的老 iPhone。所有协商到 TLS 1.2 AES 都没有问题。

但有两件事尤其行不通。第一,CURL,它似乎因这个与 SSL 相关的模糊错误“(60) SSL 证书问题:无法获得本地颁发者证书”而失败,奇怪的是,我的智能电视 LG B8 OLED 也有证书错误,并且建议仔细检查 date/time 设置,这些设置是正确的。

如果有人想测试,这里是网址:https://forestfire.net

该消息与此处记录的 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 错误相同:

https://www.openssl.org/docs/manmaster/man3/X509_STORE_CTX_get_error.html

the issuer certificate could not be found: this occurs if the issuer certificate of an untrusted certificate cannot be found.

通常,当您配置服务器时,您需要设置服务器自己的证书以及证书链中任何必需的中间证书(这些是上面提到的 "untrusted" 证书)。在客户端,您需要受信任的 CA 证书列表。

如果证书链中的中间证书列表丢失或在某种程度上不正确,或者如果客户端在其 "untrusted" 链的顶部没有 CA,则可能会出现此错误信任库。

如果不同的客户端在其信任库中有不同的证书,您可以在不同的客户端之间获得不同的行为。例如,浏览器可能缓存了一些中间证书,因此即使服务器不提供它们也可以完成链。