[devel] Взгляд на сертификаты в /usr/share/ca-certificates/ca-bundle.crt и сертификаты УЦ РФ

Konstantin Lepikhov lakostis на altlinux.org
Вт Авг 1 18:47:06 MSK 2017


Hi Vitaly!

On 08/01/17, at 12:31:07 AM you wrote:

> 
> Прошу помощи в обсуждении ситуации с корневыми сертификатами, которые у 
> нас помещаются пакетом ca-certificates в 
> /usr/share/ca-certificates/ca-bundle.crt и (в идеале) используются всеми 
> средствами работы с сертификатами.
До сих пор не используются, но такой файл есть и про него знает openssl.

> 
> Стоит задача добавить к этому списку сертификатов как минимум корневые 
> сертификаты (самоподписанные сертификаты головного удостоверяющего 
> центра (ГУЦ) РФ
> https://e-trust.gosuslugi.ru/MainCA
> 
> Ситуация осложняется тем, что ГУЦ передало функции по выдаче 
> сертификатов различным УЦ (аккредитованным), что приводит к появлению 
> нескольких тысяч промежуточных сертификатов
> https://e-trust.gosuslugi.ru/CA
А где можно ознакомиться с регламентом предоставления статуса ЦА и
отчетом аудита, что данные ЦА являются ЦА?

> 
> Чтобы посмотреть на это в действии, я собрал пакет ca-gost-certificates 
> с сертификатами всех УЦ, формируя файл 
> /usr/share/ca-gost-certificates/ca-gost-bundle.crt
> на основе опубликованного XML-файла, содержащего все сертификаты 
> https://e-trust.gosuslugi.ru/CA/DownloadTSL?schemaVersion=0
> 
> Приклеив (concatenate) 
> /usr/share/ca-gost-certificates/ca-gost-bundle.crt к системному 
> /usr/share/ca-certificates/ca-bundle.crt можно добавить в поле видимости 
> OpenSSL эти сертификаты и он будет с ними работать после настройки 
> согласно https://www.altlinux.org/ГОСТ_в_OpenSSL
> 
> После этого совершенно свободно удалось проверить подпись на упомянутом 
> XML-файле с помощью xmlsec и модуля xmlsec-openssl.
Если напрячься то можно и не так раскорячится. Ну проверили вы что-то,
через какой-то блоб, дальше то что?

> 
> Поскольку нынешняя архитектура не предусматривает подключение 
> промежуточных сертификатов, хочу посоветоваться, что мы с ними будем 
> делать.
Нынешняя архитектура предусматривает работу openssl через список
сертификатов, которые прошли процедуру доверия в Mozilla в соответствии с
https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/

Все остальное не является сертификатами, которым можно доверять как
корневым. Данная система гарантирует, что у вас на уровне утилит которые
используют libssl будет ровно такое же поведение как и при использовании
браузеров Firefox и Chromium.

Официальной поддержки ГОСТ в браузерах нет и не предвидится по целому
ряду факторов, если интересно я могу их озвучить отдельным письмом но об
этом знают и в руководстве ООО.

> 
> Судя по всему, есть мнение, что такие сертификаты не должны включаться в 
> список ca-bundle.crt:
> https://bugzilla.altlinux.org/show_bug.cgi?id=33498
> С другой стороны, как я понимаю, ничего опасного в них тоже нет (они 
> подписаны корневыми УЦ, хотя это пока никто не проверял), кроме того, 
> что их много и их добавление сильно замедляет подгрузку файла 
> сертификатов (и запуск команды openssl, например).
Если вы внимательно читали комментарии к багу, то могли увидеть что
сертификаты выпустил Symantec, да-да, тот самый, который хотят забанить и
в Chromium и в Mozilla ибо там творится бардак с защитой данных и
сертификатов от третьих лиц.

Вы же предлагаете еще больший бардак вроде добавить сертификаты УЦ
какой-то администрации какого-то края где вообще непонятно что происходит
и кто вообще имеет доступы к этим сертификатам. Например, компьютер в сети
администрации Х будет хакнут хакером Васей, который потом переподпишет
этими сертификатами имена gosuslugi или sberbank.ru. И ваш openssl это
проглотит.

> 
> Насколько я понимаю ситуацию в мире веб-сервисов (смотрю на примере 
> nginx, postfix, jabberd2 и т.п.) с установленными SSL-сертификатами, там 
> приходится применять следующий подход: указывается не только
> сертификат, полученный для сайта, но ещё и все промежуточные 
> сертификаты, чтобы клиент, имеющий скудный набор корневых сертификатов 
> (в браузере или в ca-bundle.crt) мог удостовериться в его подлинности.
А еще в браузерах используется CRL URL и OCSP для проверки и еще некоторые
техники, гарантирующие что ваша база сертификатов не скомпрометирована.
Сертификат вам как таковой гарантирует только целостность данных а их не
подлинность.

> 
> Сертификаты УЦ РФ сейчас практически не используются на сайтах (в 
> основном по причине проблем с браузерами), но планируются к активному 
> использованию в подписывании документов, проверке подписей.
> Как правило, во всех случаях использования пользователю предлагается 
> скачать и установить необходимую цепочку сертификатов, что при 
> повседневном широкой работе с различными организациями мало приемлемо.
У вас есть коммерческие заказчики, которые сидят на Сизифе? Думаю, у них
продукты _на базе_ Сизифа где вы как продавец или интегратор вольны делать
что хотите. Не надо выставлять собственные проблемы как проблемы
мифических "пользователей". Точно также как и рядовой пользователь
поставит что-то от ООО где вместо firefox будет firefox-gost с одобренным
ФСБ бэкдорами )

> 
> К моему большому удивлению, (в openssl) нет механизма (или я его не 
> заметил) использования нескольких файлов с сертификатами. Даже не 
> существует стандартного пути, и программы (библиотеки), использующие 
> ca-bundle.crt, должны сами указывать к нему путь.
Вам уже ответили письмом ниже, что все есть в libssl нужно только
внимательно читать документацию.

> Вопросы:
> 1. Существуют ли механизмы, упрощающие совмещение нескольких наборов 
> сертификатов
> (чтобы совместить наборы, идущие в ca-certificates и в 
> ca-gost-certificates), или предложения, как красиво решить этот вопрос.
Убедите ФСБ отказаться от сертификации для ГСЦ и вам не нужно будет
решать эту проблему.

> 
> 2. Существуют ли механизмы, подразумевающие локальное хранение и 
> обновление промежуточных сертификатов?
??

> 
> 
> И отдельно риторический вопрос: почему поддержка GOST не включена у нас 
> в openssl из коробки? И хотя бы нет готовой ручки в control. Без этого 
> массового использования не получится.
см. выше.

-- 
WBR et al.


Подробная информация о списке рассылки Devel