* [gentoo-user-ru] openssl: CRL Distribution Point
@ 2009-01-04 23:19 Anton Ananich
2009-01-05 19:14 ` Denis V. Rybakov
0 siblings, 1 reply; 5+ messages in thread
From: Anton Ananich @ 2009-01-04 23:19 UTC (permalink / raw
To: gentoo-user-ru
Здравствуйте!
Это письмо в продолжение темы "openssl: certificate authority".
Описание ситуации: есть компания "Рога и Копыта". Сотрудники Бендер и
Паниковский работают за компьютерами с Gentoo Linux и обмениваются
сообщениями e-mail. В силу специфики их работы они имеют потребность
шифровать свою переписку с помощью SSL сертификатов. В компании
имеется Certificate Authority (CA) и у каждого из сотрудников на
компьютере установлен корневой сертификат. Здесь неявно
предполагается, что CA включает корневой сертификат, все выданные
пользовательские сертификаты, а также список отозванных сертификатов
(CRL)
В один день Паниковский теряет свой ноутбук вместе с сертификатом. Он
сообщает об этом администратору, администратор с помощью
# openssl -revoke panikovsky.pem
делает сертификат невалидным, выдает новый ноутбук и новый сертификат.
Вопросы:
1) Как _правильно_ нужно настроить CA, чтобы Бендер мог об этом узнать
о том, что сертификат скомпрометирован как можно скорее?
2) Как протестировать, что CRL действительно блокирует сертификаты в
a) браузере (например firefox)
б) почтовом клиенте ( например Thunderbird или Microsoft Outlook)
Ранее в рассылке было упомянуто решение: CRL Distribution Point,
однако поиск в сети не дал желаемых результатов. Надеюсь мы сможем
найти истину вместе :)
С уважением,
Антон Ананич
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [gentoo-user-ru] openssl: CRL Distribution Point
2009-01-04 23:19 [gentoo-user-ru] openssl: CRL Distribution Point Anton Ananich
@ 2009-01-05 19:14 ` Denis V. Rybakov
2009-01-06 20:11 ` Anton Ananich
0 siblings, 1 reply; 5+ messages in thread
From: Denis V. Rybakov @ 2009-01-05 19:14 UTC (permalink / raw
To: gentoo-user-ru
Anton Ananich wrote:
> В силу специфики их работы они имеют потребность
> шифровать свою переписку с помощью SSL сертификатов.
Нет такого понятия "ssl-сертификат".
Не надо выдумывать отсебятину, это запутывает и тебя, и собеседника.
Лучше почитать RFC3280, RFC2510 и принять существующую терминологию,
а заодно и получить ответы на 90% своих вопросов :)
> В один день Паниковский теряет свой ноутбук вместе с сертификатом. Он
> сообщает об этом администратору, администратор с помощью
> # openssl -revoke panikovsky.pem
> делает сертификат невалидным, выдает новый ноутбук и новый сертификат.
>
> Вопросы:
> 1) Как _правильно_ нужно настроить CA, чтобы Бендер мог об этом узнать
> о том, что сертификат скомпрометирован как можно скорее?
> 2) Как протестировать, что CRL действительно блокирует сертификаты в
> a) браузере (например firefox)
> б) почтовом клиенте ( например Thunderbird или Microsoft Outlook)
>
Есть множество этапов, которые выполняют при проверке сертификата на
валидность
Что касается проверки на отозванность, то это вообще отдельная тема,
т.к. каждый строит свою
схему в зависимости от жесткости требований.
Ну например приведу более менее полную схему.
1. NotBefore <= NOW <= NotAfter
2. Поиск CRL для данного УЦ в хранилище.
2.1 Попытка обновить CRL через CDP (CRL Distrubution Point, опциональна,
указывается в качестве расширения в сертификате УЦ)
2.1.1 Если удалось, проверяем на присутствие в списке
2.1.2 Если не удалось, можем игнорировать, при условии наличия в
локальном хранилище
неистекшего CRL, а можем обломать, в зависимости от параноидальности.
3. Проверка статуса через службу OCSP, опять же возможны варианты, если
не удалось до нее достучаться (доверять локальному CRL или нет).
И это еще не все. Тема вопроса обширнейшая.
В криптографической подсистеме винды есть даже понятие Revocation
Provider, т.е. это отдельная сущность, которая
исходя из своей логики, говорит тебе валиден сертификат или нет и
которую можно написать под свои требования.
Основная беда в том, что в линуксе ничего такого централизованного нет -
хранилища сертификатов, единое криптоапи и т.д.
Да даже нецентрализованного тоже в общем то нет, openssl который с
ооочень большим натягом можно посчитать за стандарт
каждое приложение использует как ему вздумается.
Единственное - в мозилле (firefox, thinderbird, etc) криптуха более
менее реализована, оно даже OCSP держит.
> Ранее в рассылке было упомянуто решение: CRL Distribution Point,
> однако поиск в сети не дал желаемых результатов.
CDP это всего лишь вершина айсберга.
> Надеюсь мы сможем найти истину вместе :)
>
Истина в том, что криптуха в линуксе в плачевном состоянии.
А если говорить о каком-то стандарте на уровне системы, то ее просто нет.
Тупое решение в лоб.
1. Создаешь CA с расширением id-ce-cRLDistributionPoints (CDP по
простому), там можно всякие URI указывать,
самое простое - http. Будет типа http://blabla.bla/ca.crl
(на чем CA поднимать не спрашивай, тут тоже все печально. самое простое
- можешь из openvpn выдрать)
2. На CA обеспечиваешь, чтобы текущий crl был доступен по тому же урлу,
что и в расширении корневого сертификта.
3. Магическим образом заставляешь клиентское ПО использовать проверку
сертификатов по CRL вытащенгному с CDP
(могу ошибаться, но вроде в openssl есть механизмы, которые сами это
делают, если с curl'ом собирать)
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [gentoo-user-ru] openssl: CRL Distribution Point
2009-01-05 19:14 ` Denis V. Rybakov
@ 2009-01-06 20:11 ` Anton Ananich
2009-01-07 11:45 ` Vlad "SATtva" Miller
0 siblings, 1 reply; 5+ messages in thread
From: Anton Ananich @ 2009-01-06 20:11 UTC (permalink / raw
To: gentoo-user-ru
Трудно не согласиться, ведь если бы с криптографией в gentoo не было
проблем, то я бы и не стал вопрос задавать :-)
На счет openssl и curl не совсем понятно: поизводится ли в принципе
проверка сертификата на нахождение в revokation list. Скорее всего
если такая возможность и есть, то curl не задействован в реализации:
# ./Configure --help
Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx]
[-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads]
[[no-]shared] [[no-]zlib|zlib-dynamic] [enable-montasm] [no-asm]
[no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR]
[--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]
# emerge -pv openssl
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild R ] dev-libs/openssl-0.9.8h-r1 USE="(sse2) zlib -bindist
-gmp -kerberos -test" 0 kB
Total: 1 package (1 reinstall), Size of downloads: 0 kB
Всё это наталкивает на мысль, что проверка НЕ выполняется. Думаю стоит
попробовать провести эксперимет.
2009/1/5 Denis V. Rybakov <denis.rybakov@gmail.com>:
> Anton Ananich wrote:
>
>> В силу специфики их работы они имеют потребность
>> шифровать свою переписку с помощью SSL сертификатов.
>
> Нет такого понятия "ssl-сертификат".
> Не надо выдумывать отсебятину, это запутывает и тебя, и собеседника.
> Лучше почитать RFC3280, RFC2510 и принять существующую терминологию,
> а заодно и получить ответы на 90% своих вопросов :)
>
>> В один день Паниковский теряет свой ноутбук вместе с сертификатом. Он
>> сообщает об этом администратору, администратор с помощью
>> # openssl -revoke panikovsky.pem
>> делает сертификат невалидным, выдает новый ноутбук и новый сертификат.
>>
>> Вопросы:
>> 1) Как _правильно_ нужно настроить CA, чтобы Бендер мог об этом узнать
>> о том, что сертификат скомпрометирован как можно скорее?
>> 2) Как протестировать, что CRL действительно блокирует сертификаты в
>> a) браузере (например firefox)
>> б) почтовом клиенте ( например Thunderbird или Microsoft Outlook)
>>
>
> Есть множество этапов, которые выполняют при проверке сертификата на
> валидность
> Что касается проверки на отозванность, то это вообще отдельная тема, т.к.
> каждый строит свою
> схему в зависимости от жесткости требований.
> Ну например приведу более менее полную схему.
> 1. NotBefore <= NOW <= NotAfter
> 2. Поиск CRL для данного УЦ в хранилище.
> 2.1 Попытка обновить CRL через CDP (CRL Distrubution Point, опциональна,
> указывается в качестве расширения в сертификате УЦ)
> 2.1.1 Если удалось, проверяем на присутствие в списке
> 2.1.2 Если не удалось, можем игнорировать, при условии наличия в локальном
> хранилище
> неистекшего CRL, а можем обломать, в зависимости от параноидальности.
> 3. Проверка статуса через службу OCSP, опять же возможны варианты, если не
> удалось до нее достучаться (доверять локальному CRL или нет).
>
> И это еще не все. Тема вопроса обширнейшая.
> В криптографической подсистеме винды есть даже понятие Revocation Provider,
> т.е. это отдельная сущность, которая
> исходя из своей логики, говорит тебе валиден сертификат или нет и которую
> можно написать под свои требования.
>
> Основная беда в том, что в линуксе ничего такого централизованного нет -
> хранилища сертификатов, единое криптоапи и т.д.
> Да даже нецентрализованного тоже в общем то нет, openssl который с ооочень
> большим натягом можно посчитать за стандарт
> каждое приложение использует как ему вздумается.
>
> Единственное - в мозилле (firefox, thinderbird, etc) криптуха более менее
> реализована, оно даже OCSP держит.
>
>> Ранее в рассылке было упомянуто решение: CRL Distribution Point,
>> однако поиск в сети не дал желаемых результатов.
>
> CDP это всего лишь вершина айсберга.
>
>> Надеюсь мы сможем найти истину вместе :)
>>
>
> Истина в том, что криптуха в линуксе в плачевном состоянии.
> А если говорить о каком-то стандарте на уровне системы, то ее просто нет.
>
> Тупое решение в лоб.
> 1. Создаешь CA с расширением id-ce-cRLDistributionPoints (CDP по простому),
> там можно всякие URI указывать,
> самое простое - http. Будет типа http://blabla.bla/ca.crl (на чем CA
> поднимать не спрашивай, тут тоже все печально. самое простое - можешь из
> openvpn выдрать)
> 2. На CA обеспечиваешь, чтобы текущий crl был доступен по тому же урлу, что
> и в расширении корневого сертификта.
> 3. Магическим образом заставляешь клиентское ПО использовать проверку
> сертификатов по CRL вытащенгному с CDP
> (могу ошибаться, но вроде в openssl есть механизмы, которые сами это делают,
> если с curl'ом собирать)
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [gentoo-user-ru] openssl: CRL Distribution Point
2009-01-06 20:11 ` Anton Ananich
@ 2009-01-07 11:45 ` Vlad "SATtva" Miller
2009-01-08 1:24 ` Anton Ananich
0 siblings, 1 reply; 5+ messages in thread
From: Vlad "SATtva" Miller @ 2009-01-07 11:45 UTC (permalink / raw
To: gentoo-user-ru
Anton Ananich (07.01.2009 02:11):
> Трудно не согласиться, ведь если бы с криптографией в gentoo не было
> проблем, то я бы и не стал вопрос задавать :-)
Здесь имеет место подмена понятий. Утверждать, что в Линуксе вообще и в
Генте в частности проблема с криптографией значит не понимать ни того,
ни другого (с тем же успехом можно заявить, что в Линуксе проблемы с
профессиональной 3d-графикой, потому что не работает Макс). Речь в
данном треде идёт конкретно об X.509 PKI, который успешно поддерживается
де-факто стандартный openssl. При этом ничто не мешает построить
инфраструктуру на основе более гибкого OpenPGP.
> На счет openssl и curl не совсем понятно: поизводится ли в принципе
<trimmed>
> Вопросы:
> 1) Как _правильно_ нужно настроить CA, чтобы Бендер мог об этом узнать
> о том, что сертификат скомпрометирован как можно скорее?
> 2) Как протестировать, что CRL действительно блокирует сертификаты в
> a) браузере (например firefox)
> б) почтовом клиенте ( например Thunderbird или Microsoft Outlook)
http://openssl.org/docs/apps/x509v3_config.html#CRL_distribution_points_
http://www.openssl.org/docs/apps/ocsp.html
--
SATtva | security & privacy consulting
www.vladmiller.info | www.pgpru.com
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [gentoo-user-ru] openssl: CRL Distribution Point
2009-01-07 11:45 ` Vlad "SATtva" Miller
@ 2009-01-08 1:24 ` Anton Ananich
0 siblings, 0 replies; 5+ messages in thread
From: Anton Ananich @ 2009-01-08 1:24 UTC (permalink / raw
To: gentoo-user-ru
Здравствуйте!
Я попытался проверить как работает CRL в openssl, и написал, что из
этого вышло. К сожалению похвастаться нечем: при выполнении команды
openssl verify -verbose -crl_check -CAfile cacert.pem usercert.pem
получаю фигвам -- unable to get certificate CRL; Почему? После
полутарочасового копания в исходниках я обнаружил, что в OpenSSL есть
косяк. Дело в том, что при поиске CRL сравниваются два поля: Issuer
сертификата, который выглядит примерно так:
Issuer: O=TestCompany, CN=Root CA
и Issuer списка отозванных сертификатов (CRL)
Issuer: /O=TestCompany/CN=Root CA
А они почему-то оказались не равны... Почему? А в исходниках коммент:
Retrieve CRL corresponding to certificate: currently just a
subject lookup: maybe use AKID later...
Думаю, что естественней было бы сравнивать не Issuerы а Authority Key
Identifierы
Вывод: есть два варианта: либо я что-то не так сгенерировал, либо
openssl-0.9.8h не поддерживает CRL из-за этого бага. То есть скорее
всего раньше поддерживал, а потом были внесены изменения, и т.д.
С уважением,
Антон Ананич
2009/1/7 Vlad SATtva Miller <sattva@vladmiller.info>:
> Anton Ananich (07.01.2009 02:11):
>> Трудно не согласиться, ведь если бы с криптографией в gentoo не было
>> проблем, то я бы и не стал вопрос задавать :-)
>
> Здесь имеет место подмена понятий. Утверждать, что в Линуксе вообще и в
> Генте в частности проблема с криптографией значит не понимать ни того,
> ни другого (с тем же успехом можно заявить, что в Линуксе проблемы с
> профессиональной 3d-графикой, потому что не работает Макс). Речь в
> данном треде идёт конкретно об X.509 PKI, который успешно поддерживается
> де-факто стандартный openssl. При этом ничто не мешает построить
> инфраструктуру на основе более гибкого OpenPGP.
>
>> На счет openssl и curl не совсем понятно: поизводится ли в принципе
> <trimmed>
>
>> Вопросы:
>> 1) Как _правильно_ нужно настроить CA, чтобы Бендер мог об этом узнать
>> о том, что сертификат скомпрометирован как можно скорее?
>> 2) Как протестировать, что CRL действительно блокирует сертификаты в
>> a) браузере (например firefox)
>> б) почтовом клиенте ( например Thunderbird или Microsoft Outlook)
>
> http://openssl.org/docs/apps/x509v3_config.html#CRL_distribution_points_
> http://www.openssl.org/docs/apps/ocsp.html
>
> --
> SATtva | security & privacy consulting
> www.vladmiller.info | www.pgpru.com
>
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2009-01-08 1:24 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-04 23:19 [gentoo-user-ru] openssl: CRL Distribution Point Anton Ananich
2009-01-05 19:14 ` Denis V. Rybakov
2009-01-06 20:11 ` Anton Ananich
2009-01-07 11:45 ` Vlad "SATtva" Miller
2009-01-08 1:24 ` Anton Ananich
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox