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