Простой способ - проверить вывод:
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 недостаточно хорошо - кто-то мог вставить поддельный / самоподписанный с этим DN).
Я не думаю, что вы можете сделать это намного лучше, поскольку многие CA, включая Verisign, не украшают свои CRL идентификаторами (вы можете подтвердить это с помощью curl --silent http://crl.verisign.com/pca1.crl |openssl asn1parse -inform DER
).Таким образом, вы действительно должны извлечь DN, найти сравнение DN по строкам в вашем тайнике и затем проверить подпись.И в идеале зайти настолько далеко, что фактически сравнивать с той частью DN, которая фактически подписана подписью;поскольку гнусная запись теоретически могла бы сделать DN, с которыми подписывается мало (например, только страна) (и, таким образом, допускаются изменения / сопоставления в последнюю минуту).