当我使用openssl API验证服务器证书(自签名)时,我得到了以下错误:
错误19在1深度查找:证书中的自签名证书链式
根据openssl文档,此错误(19)为
"X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN:中的自签名证书证书链-可以使用不受信任的证书,但在本地找不到根证书。"
为什么会出现此错误?我的服务器证书有问题吗?
您有一个自签名的证书,因此默认情况下它是不受信任的,这就是OpenSSL抱怨的原因。这个警告实际上是一件好事,因为这种情况也可能因为中间人的攻击而增加。
要解决此问题,您需要将其安装为受信任的服务器。如果它是由一个不受信任的CA签署的,你也必须安装该CA的证书。
看看这个关于安装自签名证书的链接。
下面是一个验证证书由特定CA:签名的行
openssl verify -verbose -x509_strict -CAfile ca.pem certificate.pem
这不需要在任何地方安装CA。
请参阅SSL证书链捆绑包是如何工作的?了解详细信息和正确的证书链处理。
错误的解决方案是在代码顶部添加以下行:
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
如果您正在运行Charles并试图构建一个docker容器,那么很可能会出现此错误。
确保在proxy -> macOS proxy
下禁用Charles(macos)代理
Charles是
HTTP代理/HTTP监视器/反向代理,使开发人员能够查看其计算机和Internet之间的所有HTTP和SSL/HTTPS流量。
因此,任何类似的事情都可能导致同样的问题。
如果您使用Postman测试端点,只需转到设置并禁用"启用SSL证书验证";
您还可以使用以下命令全局跳过SSL验证:
git config --global http.sslVerify false