我正在使用安装了OpenSSL 1.0.2k-fips的CentOS,并且我已经构建并安装了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,但这没有任何改变.我也尝试使用openssl命令的-CApath选项,就像这样(使用与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缺少一些其他/更多的证书我需要指出它?
你可以通过-showcerts让s_client向你展示证书链:
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'