27

当我使用 openssl API 验证服务器证书(自签名)时,出现以下错误:

1 深度查找时出现错误 19:证书链中的自签名证书

根据 openssl文档,此错误 (19) 是

“X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN:证书链中的自签名证书 - 可以使用不受信任的证书构建证书链,但在本地找不到根。”

为什么会出现这个错误?我的服务器证书有问题吗?

4

4 回答 4

26

您有一个自签名的证书,因此默认情况下它是不受信任的,这就是 OpenSSL 抱怨的原因。这个警告实际上是一件好事,因为这种情况也可能由于中间人攻击而上升。

要解决此问题,您需要将其安装为受信任的服务器。如果它是由不受信任的 CA 签名的,则您还必须安装该 CA 的证书。

查看有关安装自签名证书的链接。

于 2012-08-29T14:52:02.313 回答
18

这是验证要由特定 CA 签名的证书的单行代码:

openssl verify -verbose -x509_strict -CAfile ca.pem certificate.pem

这不需要在任何地方安装 CA。

请参阅SSL 证书链捆绑包如何工作?有关详细信息和正确的证书链处理。

于 2015-09-15T06:34:03.457 回答
4

如果您正在运行Charles并尝试构建容器,那么您很可能会收到此错误。

确保在下禁用 Charles (macos) 代理proxy -> macOS proxy

查尔斯是一个

HTTP 代理/HTTP 监视器/反向代理,使开发人员能够查看他们的机器和 Internet 之间的所有 HTTP 和 SSL/HTTPS 流量。

所以任何类似的事情都可能导致同样的问题。

于 2019-11-22T09:22:33.527 回答
1

该错误的解决方案是在代码顶部添加这一行:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
于 2019-03-18T11:36:25.253 回答