gpt4 book ai didi

ssl - 使用 openssl 验证针对 CRL 的证书链

转载 作者:行者123 更新时间:2023-12-04 22:43:34 27 4
gpt4 key购买 nike

我正在尝试了解证书和 CRL 处理,因此我创建了以下示例证书链:

根 CA(自签名)→ 中间 CA(由根 CA 签名)→ 服务器证书(经中间 CA 签名)

现在我想测试证书吊销是否有效。为此,我撤销了服务器证书并相应地创建了一个 CRL 文件(属于中间 CA)。 X509v3 CRL 分发点存在于所有证书文件中,它们可通过 http 访问,例如:

X509v3 CRL Distribution Points:
Full Name:
URI:http://127.0.0.1:80/intermediate_ca.crl

(这是我刚刚创建的 CRL。(对于位于 http://127.0.0.1:80/ca.crl 的根 CA CRL 也是如此。)我仔细检查了它们是否确实存在并可在该 URI 中访问。)

接下来,我 cat根 CA pem文件和中间数据 CA pem文件到 CAChain.pem .

我想要一个接收服务器证书和 CAChain.pem 的命令并“爬上”证书链,以便对其进行总体验证。

我试着去
openssl verify -extended_crl -crl_check_all -crl_download -CAfile CAChain.pem -verbose serverCert.pem
但我只是得到:
Error loading CRL from http://127.0.0.1:80/ca.crl
140041593399104:error:27076072:OCSP routines:parse_http_line1:server response error:crypto/ocsp/ocsp_ht.c:260:Code=404,Reason=Not Found
...
error 3 at 0 depth lookup: unable to get certificate CRL

同样,CRL 确实存在于表示的 URI 中。这就是为什么我无法解释错误 404 的原因。(另外,我觉得这个错误是由 OSCP 模块引起的,因为我现在只是使用 CRL。)

如果有人能告诉我我的错误是什么以及如何实现我最初的意图(使用 CRL 验证整个证书链),我将不胜感激。提前致谢!

最佳答案

事实上,我主要犯了两个错误:

  • CRL 文件必须是 DER 格式,我不知道。 (从 PEM 格式转换很简单:openssl crl -in ${crlFile}.pem -outform DER -out ${crlFile})。
  • 当然,证书的 CRL 分发点必须是其父 CA 之一。 (例如,对于我的中间 CA,它必须是根 CA 之一。)

  • 牢记这一点,并将中间 CA 证书链接到服务器证书,正如 dave_thompson_085s 非常有用的评论所建议的那样,原始命令

    openssl verify -extended_crl -crl_check_all -crl_download -CAfile CAChain.pem -verbose serverCert.pem

    现在工作。

    我创建了一个 gist到目前为止我所做的事情。它仍然很丑 - 我会整理它并在 future 尝试使用 OCSP。

    关于ssl - 使用 openssl 验证针对 CRL 的证书链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60684888/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com