openssl verify - 错误20在0深度查找:无法获得本地颁发者证书

时间:2013-04-26 11:38:36

标签: openssl certificate verify

我从PFX证书创建了PEM证书并想要验证它。 然而,我遇到了这个问题,试图找到一些答案,但我没有,因此我不知道如何解决它。 你能建议吗? 非常感谢你。

C:\OpenSSL-Win32\bin>set OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg

C:\OpenSSL-Win32\bin>openssl
OpenSSL> verify C:\mycert.pem
C:\mycert.pem: C = CZ, ST = Sprava zakladnich registru, L = "Obec=Praha,Ulice=Na Vapence,PSC=13000", O = 72054506, OU = 4333, CN = tstcawilly.szr.local
error 20 at 0 depth lookup:unable to get local issuer certificate
error in verify
OpenSSL>
OpenSSL> verify -CAfile C:\mycert.pem C:\mycert.pem
C:\mycert.pem: C = CZ, ST = Sprava zakladnich registru, L = "Obec=Praha,Ulice=Na Vapence,PSC=13000", O = 72054506, OU = 4333, CN = tstcawilly.szr.local
error 20 at 0 depth lookup:unable to get local issuer certificate
error in verify
OpenSSL>

2 个答案:

答案 0 :(得分:19)

  

的OpenSSL>验证-CAfile C:\ mycert.pem C:\ mycert.pem

关闭。您需要使用-CAfile添加CA的根证书;而不是你的最终实体证书。类似的东西:

openssl verify -CAfile C:\ca-cert.pem C:\mycert.pem

此外,如果有中间证书,则需要将其添加到mycert.pem。所以mycert.pem实际上会有两个(或更多)证书(而不是一个)。

将所有必需的证书添加到mycert.pem以构建有效的链解决了"which directory"问题。它是PKI中众所周知的问题。从本质上讲,客户端(像我一样)不知道去哪里丢失中间证书。

答案 1 :(得分:0)

另一种情况是pathlen只能在CA:TRUE中的basicConstraints时设置。

示例:

basicConstraints=CA:TRUE,pathlen:10 # Okay
basicConstraints=CA:FALSE,pathlen:10 # Invalid!