Как добавить адрес CRL в самозаверяющий сертификат CA? - PullRequest
4 голосов
/ 29 марта 2011

Это дополнительный вопрос к:

как-делать-я-Create-A-самозаверяющими-сертификата для кода подписывания-на-окна

Если пойти дальше, если я создал сертификат CA и создал набор сертификатов SPC, как мне создать списки отзыва и распространить их? (примечание: я ничего не знаю о том, как работают CRL, как они распределяются и т. д.) Если бы я УГЛАСИЛ, как все это работает, я бы надеялся, что сертификат CA определил какой-то HTTP-адрес, по которому можно загрузить CRL, и Windows свяжется с ним. адрес в первый раз, когда запрашивалась цепочка сертификатов, и каждый раз, когда истекает текущий CRL ... Тогда все, что мне нужно сделать, это создать подписанный веб-адрес, который распространяет серийные номера сертификатов ...?

РЕДАКТИРОВАТЬ: САМО ОТВЕТЫ

Для всех, кому это интересно, Bouncy Castle - это библиотека Java + C #, предоставляющая огромный набор PKI Crypto API, включая генерацию сертификатов.

Их пример кода (в их загрузках) демонстрирует, как генерировать связанный набор сертификатов CA, Intermediate и «Personal».

То, что он не показывает, это как правильно назначить CRL на основе HTTP - вы можете сделать это с помощью этого кода:

GeneralName gn = new GeneralName(new DerIA5String("http://localhost/revocationlist.crl"), 6);


GeneralNames gns = new GeneralNames(gn);
DistributionPointName dpn = new DistributionPointName(gns);
DistributionPoint distp = new DistributionPoint(dpn, null, null);

DerSequence seq = new DerSequence(distp);

v3CertGen.AddExtension(X509Extensions.CrlDistributionPoints, false, seq);

Ответы [ 2 ]

3 голосов
/ 10 апреля 2012

Начиная с crypto-147, предоставленный код изменился на

GeneralName gn = new GeneralName(GeneralName.uniformResourceIdentifier, new DERIA5String(crlUrl));
GeneralNames gns = new GeneralNames(gn);
DistributionPointName dpn = new DistributionPointName(gns);
DistributionPoint distp = new DistributionPoint(dpn, null, null);
DERSequence seq = new DERSequence(distp);
certGen.addExtension(Extension.cRLDistributionPoints, false, seq);
1 голос
/ 29 марта 2011

Предположим, у вас есть сертификат CA и некоторый набор сертификатов, подписанных этим сертификатом CA.Затем вы можете создать CRL, который (потенциально) будет содержать идентификаторы отозванных сертификатов, которые были ранее подписаны с использованием сертификата CA.Действительно, вы добавляете URL CRL в сам сертификат CA через соответствующее расширение сертификата (CRLDistributionPoint).

Поскольку вы не указали, какие инструменты или библиотеки вы используете для генерации сертификатов, я не могу сказать, как можно добавить расширение.

PS: Я бы порекомендовал вам узнать о технологиях его использования.Особенно, когда речь идет о внедрении безопасности.В противном случае вы окажетесь в ситуации, хуже, чем у Comodo, чьи подчиненные CA недавно выдавали поддельные сертификаты для Google, Yahoo и других программ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...