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
next 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