Openssl 找出哪个CA证书验证了CRL文件的真实性

Openssl 找出哪个CA证书验证了CRL文件的真实性,openssl,certificate,certificate-revocation,Openssl,Certificate,Certificate Revocation,给定某个CRL,例如: 下载它,并要求openssl验证它并显示它的内容,就像一个符咒: wget http://crl.verisign.com/pca1.crl openssl crl -in ./pca1.crl -inform DER -text verify OK Certificate Revocation List (CRL): Version 1 (0x0) Signature Algorithm: sha1WithRSAEncryption

给定某个CRL,例如:

下载它,并要求
openssl
验证它并显示它的内容,就像一个符咒:

wget http://crl.verisign.com/pca1.crl
openssl crl -in ./pca1.crl -inform DER -text
verify OK
Certificate Revocation List (CRL):
        Version 1 (0x0)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: /C=US/O=VeriSign, Inc./OU=Class 1 Public Primary Certification Authority
        Last Update: Nov 22 00:00:00 2011 GMT
        Next Update: Mar 21 23:59:59 2012 GMT
...
[truncated]
有没有办法找出哪个CA证书验证了此CRL的真实性


或者是在证书存储中循环证书并逐个尝试直到找到匹配项的唯一方法?

简单的方法是检查以下内容的输出:

curl --silent http://crl.verisign.com/pca1.crl |openssl crl  -inform DER -noout -issuer
这将类似于:

issuer=/C=US/O=VeriSign, Inc./OU=Class 1 Public Primary Certification Authority
这将告诉您颁发者,即签署CRL的实体,不一定是颁发证书并被撤销的实体(尽管通常是)

您可以更进一步,通过以下方式进行验证:

 curl  --silent -O ca.pem http://www.verisign.com/repository/roots/root-certificates/PCA-1.pem
 curl --silent http://crl.verisign.com/pca1.crl |\
      openssl crl  -inform DER  -noout -CAfile PCA-1.pem
检查你是否看到一个

 verify OK
或者,如果你有一个证书库,寻找一个DN与你在发卡机构中找到的DN相同的发卡机构;然后检查签名(比较DNs不够好-可能有人插入了一个伪造的/自签名的DN)


我不认为你能做得比这更好,因为很多CA,包括Verisign,都没有用标识符来装饰他们的CRL(你可以用
curl--silent来确认这一点)http://crl.verisign.com/pca1.crl |openssl asn1parse-通知DER
)。因此,您实际上要提取DN,在您的存储上通过字符串比较找到一个DN,然后检查签名。理想情况下,与DN中由签名实际签名的部分进行比较;作为一个恶意条目,理论上可能会使DNs很少(例如,只有国家)被签署(从而允许在最后一刻进行更改/匹配)。

这个问题似乎与主题无关,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。