openssl upgrade |验证证书失败



我在CentOS7机器上工作,用静态openssl版本1.1.0l编译我的代码,我的机器版本1.0.2k

当我尝试认证到服务器时,我得到这些错误消息:0深度查找错误20:无法获得本地颁发者证书。

我决定单独编译openssl并运行验证。

似乎与我的服务器(没有改变)的握手过程在新版本中失败了,我正在试图找出原因。

在两个openssl版本中运行以下命令:

openssl s_client -showcerts -connect server:port

结果是更新的失败。结果的差异:

旧版1.0.2k(握手成功):

Server Temp Key: ECDH, P-256, 256 bits
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256

New 1.1.0l (fails handshake):

Server Temp Key: X25519, 253 bits
New, TLSv1.2, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Verify return code: 20 (unable to get local issuer certificate)

我希望你能帮助我理解它们的区别,以及它们为什么不同。

编辑:

升级

为将来参考,此处添加解决方案

一旦开始使用openssl版本>在centos7机器上,在根证书解析路径中似乎有一个行为改变。

Openssl遍历一个预定义的证书存储位置列表,然而,一旦它在/val/ssl中遇到cert.pem文件,它将对其进行测试,如果使用它验证远程失败,将停止在其余位置查找。它恰好是好的证书(在我的客户端的env中)/etc/ssl被openssl在/var/ssl之后搜索,因此失败。

我的解决方案是在openssl失败的情况下以编程方式选择正确的cert.pem(不改变机器的openssl版本,这是被禁止的)。

最新更新