2

我正在使用 OpenSSL 来验证自定义 PKI 中的签名代码。如何验证证书层次结构的每个节点的 CRL。

我的层次结构是:RootCA -> SubCA1 -> SubCA2 -> EndUser。我可以验证一个深度链的 CRL:

~/$ cat RootCA.crl.pem RootCA.pem > RootCA.chain.pem
~/$ openssl verify -check_crl -CAfile RootCA.chain.pem SubCA1.pem
CN = SubCA1
SubCA1.pem: OK

但是,当我尝试使用多个 subCA 实现相同的目标时,CRL 验证失败:

~/$ cat RootCA.crl.pem RootCA.pem > RootCA.chain.pem
~/$ cat SubCA1.crl.pem SubCA1.pem > SubCA1.chain.pem
~/$ openssl verify -check_crl -CAfile RootCA.chain.pem -untrusted SubCA1.chain.pem SubCA2.pem
CN = SubCA1
error 3 at depth 0 lookup: unable to get certificate CRL
error SubCA2.pem: verification failed

是否有可能实现 CRL 的这种多深度验证?我也尝试过使用-check_crl_all,但它给出了同样的错误。

4

1 回答 1

1

根据https://raymii.org/s/articles/OpenSSL_manually_verify_a_certificate_against_a_CRL.html 检查证书层次结构中每个节点的输出,根 CA 除外,因为它是自签名和自签名的,不包括 CRL。

openssl x509 -noout -text -in SubCA2.pem | grep -A 4 'X509v3 CRL Distribution Points'

它应该显示类似

X509v3 CRL Distribution Points: 
    Full Name:
   URI:http://crl.globalsign.com/gs/gsorganizationvalsha2g2.crl

否则您的 SSL 证书不包含 CRL url,很可能是自签名证书。

如果您在 pem 文件中使用以上输出存储 CRl

wget -O crl.der http://crl.globalsign.com/gs/gsorganizationvalsha2g2.crl
openssl crl -inform DER -in crl.der -outform PEM -out crl.pem

& 验证使用

openssl verify -crl_check -CAfile crl_chain.pem crl.pem 
于 2018-12-05T04:28:29.283 回答