Openssl:错误"证书链中的自签名证书"

Lun*_*oms 20 c linux openssl verify ssl-certificate

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

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

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

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

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

Eit*_*n T 12

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

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

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


小智 11

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

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是一种解决方法或测试选项。它不应该持续存在,因为它会破坏现有的安全性。 (13认同)
  • 如果我没记错的话,这似乎是 Node.js 特有的。 (5认同)
  • 它是 NodeJS 特定的,只是禁用所有证书检查。你可以做到这一点,但前提是你真正知道自己在做什么。仅仅将其作为答案放在这里是不好的,因为无论谁使用它都无法获得有关他们正在做什么的任何信息。 (2认同)
  • 我很好用它来开发。DevOps 可以按照自己的意愿处理生产中的证书。 (2认同)

Vad*_*zim 10

这是验证证书链的单行程序:

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

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

请参阅SSL证书链捆绑如何工作?详情.


kem*_*ica 5

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

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

查尔斯是一个

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

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