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

时间:2012-08-29 14:42:11

标签: c linux openssl ssl-certificate verify

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

  

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

根据openssl documentation,此错误(19)是

  

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

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

4 个答案:

答案 0 :(得分:11)

你有一个自签名的证书,默认情况下它是不可信任的,这就是OpenSSL抱怨的原因。这个警告实际上是一件好事,因为这种情况也可能因man-in-the-middle attack而上升。

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

查看有关安装自签名证书的this link

答案 1 :(得分:8)

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

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

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

有关详细信息,请参阅How does an SSL certificate chain bundle work?

答案 2 :(得分:0)

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

globals

答案 3 :(得分:0)

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

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

查尔斯是一个

  

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

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