我需要验证下载的crl实际上是由CA生成的,而不是被潜在的攻击者修改的。有什么方法可以用Linux操作系统的openssl命令来验证这一点吗?
换句话说,我需要根据其根CA验证CRL签名,我已经找到了这个链接,但没有多大帮助。根据根CA验证CRL签名
openssl有一个命令来根据颁发证书的机构验证下载的CRL的签名。
openssl crl -verify -in <crl file> -CAfile < issue certificate or cert chain>
下面是一个验证GOOGLE CRL和GOOGLE颁发者CA证书的示例
使用wget下载google crl
wget http://crl.pki.goog/GTS1O1core.crl
下载的CRL为DER格式,转换为PEM格式
openssl crl -inform DER -in GTS1O1core.crl -outform PEM -out google_crl.pem
下载google证书链
OLDIFS=$IFS; IFS=':' certificates=$(openssl s_client -connect google.com:443 -showcerts -tlsextdebug -tls1 2>&1 </dev/null | sed -n '/-----BEGIN/,/-----END/ {/-----BEGIN/ s/^/:/; p}'); for certificate in ${certificates#:}; do echo $certificate | tee -a google-cert-chain.pem ; done; IFS=$OLDIFS
根据颁发证书验证下载的CRL(可在3中下载的证书链中获得)
openssl crl -verify -in google_crl.pem -CAfile google-cert-chain.pem