Выяснение, какой сертификат CA подтвердил подлинность файла CRL - PullRequest
0 голосов
/ 05 февраля 2012

С учетом определенного CRL, например:

http://crl.verisign.com/pca1.crl

Загрузка и запрос openssl, чтобы проверить его и показать его содержимое работает как чудо1008 *

Есть ли способ узнать , какой сертификат CA подтвердил, что подлинность этого CRL?

Или это единственный способ перебрать сертификаты в хранилище сертификатов и пробовать их один за другим, пока не будет достигнуто совпадение?

1 Ответ

2 голосов
/ 13 февраля 2012

Простой способ - проверить вывод:

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, с которыми подписывается мало (например, только страна) (и, таким образом, допускаются изменения / сопоставления в последнюю минуту).

...