过去两天我一直在尝试修复我们服务器中的 SSL 证书问题。
我们有两台服务器 A 和 B,我能够将 A 连接到 B,但 B 更改了 SSL 证书。他们共享了这个密钥,我们导入了那个,但当我尝试连接 BI 时,我得到了
$ openssl s_client -CApath /etc/ssl/certs/ -connect B:443
verify error:num=10:certificate has expired
notAfter=Sep 17 12:00:00 2021 GMT
所以这仍然是旧的。然后我尝试了解我是否无法导入新的 .crt 文件,以及它是否仍然是旧的。
$ openssl x509 -in B.crt -noout -dates
notBefore=Aug 4 00:00:00 2021 GMT
notAfter=Aug 4 23:59:59 2022 GMT
不,如您所见,证书是新的且有效的。所以我尝试使用它来测试与 B 的连接。
$ openssl s_client -connect B:443 -CAfile B.crt
但它仍然会回来
verify error:num=10:certificate has expired
notAfter=Sep 17 12:00:00 2021 GMT
我现在应该怎么做?
答案1
$ openssl s_client -CApath /etc/ssl/certs/ -connect B:443 verify error:num=10:certificate has expired notAfter=Sep 17 12:00:00 2021 GMT
因此 B 发送了过期的证书。根据评论,当您使用 SNI 为名称 B 请求证书时,他们会发送有效证书。
解决方案显然是使用 SNI,因为这是 B 已经测试和实施的。