Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
openssl验证-0深度查找时出现错误20:无法获取本地颁发者证书_Openssl_Certificate_Verify - Fatal编程技术网

openssl验证-0深度查找时出现错误20:无法获取本地颁发者证书

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

我从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>
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将导致可验证证书