ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Взгляд на сертификаты в /usr/share/ca-certificates/ca-bundle.crt и сертификаты УЦ РФ
@ 2017-07-31 21:31 Vitaly Lipatov
  2017-08-01  6:06 ` Vladimir Didenko
                   ` (4 more replies)
  0 siblings, 5 replies; 32+ messages in thread
From: Vitaly Lipatov @ 2017-07-31 21:31 UTC (permalink / raw)
  To: ALT Devel discussion list; +Cc: dd


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

Стоит задача добавить к этому списку сертификатов как минимум корневые 
сертификаты (самоподписанные сертификаты головного удостоверяющего 
центра (ГУЦ) РФ
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.

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

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

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

Сертификаты УЦ РФ сейчас практически не используются на сайтах (в 
основном по причине проблем с браузерами), но планируются к активному 
использованию в подписывании документов, проверке подписей.
Как правило, во всех случаях использования пользователю предлагается 
скачать и установить необходимую цепочку сертификатов, что при 
повседневном широкой работе с различными организациями мало приемлемо.

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

Вот перечень проблем на эту тему:

В общем-то в клиенты вшиты разные свои пути, мы делаем для них ссылки
https://bugzilla.altlinux.org/show_bug.cgi?id=31213

add generation /etc/pki/java/cacerts
https://bugzilla.altlinux.org/show_bug.cgi?id=25027

GO не находит корневой сертификат
https://bugzilla.altlinux.org/show_bug.cgi?id=29449

В самом Qt, например, вшито в код
systemCerts.append(QSslCertificate::fromPath(QLatin1String("/etc/pki/tls/certs/ca-bundle.crt")


Пакет openssl делает ссылку /var/lib/ssl/cert.pem на 
/usr/share/ca-certificates/ca-bundle.crt

Как я понимаю, потом открывает его, исходя из определения в 
openssl/crypto/cryptlib.h
#  define X509_CERT_FILE          OPENSSLDIR "/cert.pem"

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

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


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


-- 
С уважением,
Виталий Липатов,
Etersoft


^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2017-08-04 11:40 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-31 21:31 [devel] Взгляд на сертификаты в /usr/share/ca-certificates/ca-bundle.crt и сертификаты УЦ РФ Vitaly Lipatov
2017-08-01  6:06 ` Vladimir Didenko
2017-08-01  8:54 ` Paul Wolneykien
2017-08-01 14:22 ` Dmitry V. Levin
2017-08-01 15:47 ` Konstantin Lepikhov
2017-08-01 16:26   ` Dmitry Derjavin
2017-08-01 18:24     ` Konstantin Lepikhov
2017-08-01 19:47       ` Dmitry Derjavin
2017-08-01 21:17         ` Konstantin Lepikhov
2017-08-01 21:31           ` Alexey Gladkov
2017-08-01 21:47             ` Konstantin Lepikhov
2017-08-02  9:55           ` Michael Shigorin
2017-08-02 10:39               ` Paul Wolneykien
2017-08-02 10:48                 ` Dmitry V. Levin
2017-08-02 11:03                 ` Alexey Gladkov
2017-08-02 13:24                     ` Paul Wolneykien
2017-08-02 13:30                                 ` Paul Wolneykien
2017-08-02 14:05                       ` Konstantin Lepikhov
2017-08-04 11:36         ` Yury A. Romanov
2017-08-01 22:37       ` Vitaly Lipatov
2017-08-01 22:57   ` Vitaly Lipatov
2017-08-01 23:48     ` Alexey Gladkov
2017-08-02 14:34       ` Vitaly Lipatov
2017-08-02 15:29         ` Alexey Gladkov
2017-08-02 16:24           ` Vitaly Lipatov
2017-08-02  8:32     ` Vladimir Didenko
2017-08-02  9:13       ` Konstantin Lepikhov
2017-08-02  9:24         ` Vladimir Didenko
2017-08-02 10:21           ` Konstantin Lepikhov
2017-08-02 14:41       ` Vitaly Lipatov
2017-08-01 17:51 ` Paul Wolneykien
2017-08-04 11:40   ` Paul Wolneykien

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git