openssl验证-0深度查找时出现错误20:无法获取本地颁发者证书
我从PFX证书创建了一个PEM证书,并希望对其进行验证。 然而,我遇到了这个问题,试图找到一些答案,但我没有,因此我不知道如何解决它。 你能给我一些建议吗? 多谢各位openssl验证-0深度查找时出现错误20:无法获取本地颁发者证书,openssl,certificate,verify,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
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>
OpenSSL>verify-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
以构建有效链,解决了这个问题。这是PKI中一个众所周知的问题。本质上,客户机(如我)不知道去哪里获取丢失的中间证书。另一种情况是pathlen
只能在basicConstraints
中设置CA:TRUE
例如:
basicConstraints=CA:TRUE,pathlen:10 # Okay
basicConstraints=CA:FALSE,pathlen:10 # Invalid!
发给我们并安装在tomcat服务器上的新证书也存在同样的问题。对于自签名证书,自签名证书不是CA证书和实体证书吗?@WilburWhateley-否。必须设置基本约束和
CA:FALSE
<代码>CA:TRUE无法设置。如果CA属性为true,则最终实体证书可以生成其他证书。那么使用自签名证书就不可能了?不清楚。因为在这种情况下只有一个证书,对吗?因此,自签名不能是CA,没有CA,您无法验证。。。我是否遗漏了什么,或者这通常是一个糟糕的SSL设计。@WilburWhateley我对使用openssl相当陌生,但从我收集的信息来看,openssl默认不信任CA,您必须为其指定要信任的CA。此外,您可以使用openssl自己创建CA(CA:TRUE
)。因此,要获得自签名证书以进行验证,您需要首先创建CA的证书和密钥,然后通过使用新创建的CA进行签名来创建“自签名”证书。此时,您可以使用自己的CA验证自签名证书。至少这是我在过去48小时左右收集的信息,让它在本地工作。谢谢。因为我在我的叶子证书上设置了CA:FALSE,pathlen:0,所以我的头撞了一个小时左右。。。证书已创建,但openssl验证无法验证。将简单更改为CA:FALSE将导致可验证证书