OpenSSL 一直告诉我“无法获取本地颁发者证书”

OpenSSL 一直告诉我“无法获取本地颁发者证书”

我正在使用 CentOS,它安装了 OpenSSL 1.0.2k-fips,并且我已经构建并安装了版本 1.1.0g,作为此处概述的 HTTP2 安装的一部分:https://www.tunetheweb.com/performance/http2/

我一直在使用 1.1.0g,但最近我更新了证书,现在尝试验证 CA 时证书似乎丢失了。CA 文件的位置没有改变,1.0.2k-fips 版本似乎可以正常使用,但 1.1.0g 却一直报错:

Verify return code: 20 (unable to get local issuer certificate)

因此,我已经验证证书是好的,位置没有改变,我没有手动更改任何配置。

我想也许我应该重建 1.1.0g,但这并没有什么改变。我还尝试使用-CApath该命令的选项openssl,如下所示(使用与 1.0.2k-fips 相同的目录):

echo | /usr/local/ssl/bin/openssl s_client -connect example.com:443 -CApath /etc/pki/tls

我也尝试过-CAfile,直接指向ca-bundle.crt我知道具有正确证书的(1.0.2k-fips 使用它们没有问题),仍然没有变化。

我不知道为什么它无法获取我的证书,并且想知道这个问题是否在我更改证书之前就已经存在(我检查了更改证书后它们是否正常工作,可能 1.1.0g 在那时已经损坏了)。

我认为这可能是由于对系统执行了更新,破坏了某些链接或文件,但是当证书内容看起来一切正常时,该去哪里查找呢?还是 1.1.0g 缺少一些其他/更多证书,我需要指出这一点?

答案1

您可以让 s_client 使用以下命令向您显示证书链-showcerts

openssl s_client -connect example.com:443 -showcerts </dev/null

这将从证书链开始,然后显示有关服务器证书和 TLS 连接的其他信息。所有这些都应该可以帮助您找出问题所在。它可能在中间证书中,而不是 CA 中。

您可以通过过滤输出来快速获取证书链的摘要:

openssl s_client -connect example.com:443 -showcerts </dev/null 2>/dev/null |
sed -e '1,/Certificate chain/d' -e '/BEGIN CERTIFICATE/,/END CERTIFICATE/d' -e '/---/,$d'

相关内容