openssl 的 verify 和 s_client 之间的区别

openssl 的 verify 和 s_client 之间的区别

openssl verify 给了我一个 20 错误代码,而 s_client 给了我一个 1 返回代码并正确获取了根证书。

有人能告诉我如何验证下载的证书吗?

ychaouche@ychaouche-PC 10:30:22 ~/TMP/CERTS $ openssl s_client -CApath /etc/ssl/certs/ -connect domain.tld:993 
CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = domain.tld
verify return:1
---
Certificate chain
 0 s:/CN=domain.tld
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3

并验证

ychaouche@ychaouche-PC 10:30:30 ~/TMP/CERTS $ openssl verify -CApath /etc/ssl/certs/ domaintld.crt 
domaintld.crt: CN = domain.tld
error 20 at 0 depth lookup:unable to get local issuer certificate
ychaouche@ychaouche-PC 10:31:21 ~/TMP/CERTS $ 

编辑:在 SO 上找到答案:https://stackoverflow.com/questions/28072021/discrepancy-between-openssl-verify-and-s-client-command

我不知道什么是最好的:简单地删除这个问题或关闭并添加一个重复的链接给 SO?(对于其他在 SF 上搜索的人)。

答案1

这个问题已经在 SO 上得到解答了。来自https://stackoverflow.com/questions/28072021/discrepancy-between-openssl-verify-and-s-client-command

openssl verify不期望证书包含其链。链需要与-untrusted参数一起传递。您可以在那里传递相同的文件,信任仍然通过查找 中的受信任根来确定-CAfile/-CApath

openssl verify -CApath /etc/ssl/certs -untrusted google_chain.pem google_chain.pem

相关内容