ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Vitaly Lipatov <lav@altlinux.ru>
To: ALT Devel discussion list <devel@lists.altlinux.org>
Cc: dd@basealt.ru
Subject: [devel] Взгляд на сертификаты в /usr/share/ca-certificates/ca-bundle.crt и сертификаты УЦ РФ
Date: Tue, 01 Aug 2017 00:31:07 +0300
Message-ID: <85c03fbd591d2075720764d1c19e7b33@altlinux.ru> (raw)


Прошу помощи в обсуждении ситуации с корневыми сертификатами, которые у 
нас помещаются пакетом 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


             reply	other threads:[~2017-07-31 21:31 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-31 21:31 Vitaly Lipatov [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=85c03fbd591d2075720764d1c19e7b33@altlinux.ru \
    --to=lav@altlinux.ru \
    --cc=dd@basealt.ru \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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