OpenSSL 验证使用 CA 签名证书失败,但使用自签名证书却成功?

OpenSSL 验证使用 CA 签名证书失败,但使用自签名证书却成功?

首先,我知道有很多相关问题,但似乎大多数都是由于服务器上缺少颁发者证书造成的。

我一直在关注本指南启用 SSL 客户端身份验证,但我无法让 Apache 接受客户端证书。仔细检查后发现,Apache 日志中充满了Certificate Verification: Error (20): unable to get local issuer certificate消息。

我正在使用 CA 授予我的证书以及作为 CA 的我的私钥。

为了进一步诊断问题,我运行openssl verify -CAfile ca.cert client_signed.crt并得到同样的错误。

我决定重做所有步骤。但是,从命令行执行所有操作仍然会返回相同的错误

$ openssl x509 -req -days 360 -in client.csr -CA ca.cert -CAkey ca.key -CAcreateserial -out client_signed.crt
Signature ok
subject= ...
Getting CA Private Key
Enter pass phrase for server.key:
[I type in the password and press ENTER]
$ openssl verify -CAfile ca.cert client_signed.crt
[ .. ]
error 20 at 0 depth lookup:unable to get local issuer certificate
$ ls ca.cert
ca.cert

为了全面诊断问题,我决定生成并自行签署一个证书,用作 CA 来签署客户端证书。令​​我惊讶的是,这完美无缺。这实际上是我所链接的教程中的第一步。

因此,显然,问题与我的证书有关。我怀疑一定与信任链有关,因为我没有签署我自己证书的 CA 的证书。我尝试下载它们从他们的网站但我甚至无法验证我自己的证书。

$ ls /path/to/downloaded/files/
acrn.cer  ancca.crt  CorreoUruguayoCA.crt  CorreoUruguayoRootCA.crt
$ openssl verify -CApath /path/to/downloaded/files/ my.cert
error 20 at 0 depth lookup:unable to get local issuer certificate

任何帮助将不胜感激。

编辑:在 Ubuntu 上使用“查看文件”实用程序表明我的证书已经Verified by: Correo Uruguayo - CA。我不确定为什么 openssl 无法验证它。

相关内容