[devel] RFC: ca-certificates a la Fedora

Mikhail Efremov sem на altlinux.org
Пт Дек 22 19:33:46 MSK 2017


On Fri, 22 Dec 2017 03:26:48 +0100 Alexey Gladkov wrote:
> On Fri, Dec 22, 2017 at 04:28:05AM +0300, Dmitry V. Levin wrote:
> > > Нету. Плюс появление несовместимости станет блокирокером к обновлению nss,
> > > что с точке зрения безопасности мне не нравится.
> > > 
> > > Если идти по этому пути, то я бы сделал альтернативы для этой библиотеки.  
> > 
> > Альтернативы для библиотек -- это вообще плохая идея, я всё никак не
> > придумаю способа их эффективно запретить.  
> 
> Если всё как сказал sem@ и действительно есть полная совместимость, то
> проблем не будет. Если несовместимость всё-таки появится/может появиться,
> то пользователи смогут переключиться на апстримную библиотеку (хотя бы
> временно). Это лучше, чем класть все яйца в одну корзину.

Если сделать так:
ln -s /usr/lib64/pkcs11/p11-kit-trust.so /etc/pki/nssdb/libnssckbi.so
то certutil -L -d sql:/etc/pki/nssdb/ -h 'Builtin Object Token'
начинает выдавать список сертификатов из p11-kit.

> > Пакет ca-certificates, насколько я понимаю, поставляет ту же самую базу,
> > которую импортирует из nss/lib/ckfw/builtins/certdata.txt,
> > достаточно просто обновлять её своевременно.  
> 
> Сейчас с обновлением nss firefox, thunderbird и chromium получают новую
> базу (это почти правде). Если ca-certificates обновляются из того же
> источника,тогда почему он не собирается из libnss ?

В принципе можно собирать и из libnss, но мне кажется отдельным пакетом
удобнее. Можно будет вносить изменения в скрипты не пересобирая ради
этого libnss или собрать новую версию с новыми сертификатами не
дожидаясь выхода новой libnss. И ничего не мешает обновлять
ca-certificates синхронно с выходом новой версии libnss.

> > > На мой взгляд правильный путь это добавление сертификатов в базу nss.
> > > https://wiki.mozilla.org/NSS_Shared_DB
> > > https://wiki.mozilla.org/NSS_Shared_DB_And_LINUX  
> > 
> > Существует ли инструмент экспорта в формат, с которым работает libnssckbi.so?  
> 
> Я начинал делать общую базу для nss, когда поддерживал всё от mozilla, но
> остановился и выпал из контекста. Поэтому ответить на этот вопрос сейчас
> не могу.
> После поверхностного просмотра там вроде формат базы sqlite.
> 
> Я знаю, что в этом плане у RH были наработки. Правда, ходят слухи, что RH
> планирует уйти с nss. Так что, кто знает...

Это может и был бы неплохой вариант, просто экспортировать сертификаты в
базу nss также, как они экспортируются для openssl и т.д. Если бы не это
(https://wiki.gentoo.org/wiki/Certificates):
Warning
Although common sense would imply that applications which use the NSS
library would also consult the system-wide database, this is more
exception than rule. Neither Chromium nor Firefox (or any of the
derived browsers) support the system-wide database. Hence, the below
instructions are generally ineffective on a system-wide basis, but can
be altered to suit per-application specific databases.

Впрочем, мне все рано в этом варианте не нравится, что у libnss может
быть другой набор CA сертификатов. Идея как раз в том, чтобы иметь
единый набор CA сертификатов для всех библиотек. И управлять уже им.
Добавил сертификат - все приложения начинают ему доверять, не зависимо
от того, используют ли они openssl, gnutls или nss. Ну и с blacklist,
соответственно, так же.

> > > Ну или альтертантивы для libnssckbi.so.  
> > 
> > Либо разные реализации libnssckbi.so окажутся настолько совместимы, что
> > будет использоваться только одна, либо нет, и тогда придётся использовать
> > разные реализации одновременно и мы вернёмся к нынешней ситуации.  
> 
> Именно, но откат пользователя к апстримной библиотеке мне кажется более
> удачным вариантом, чем невозможность пользоваться браузером/почтой вообще,
> в случае, когда вместо libnssckbi.so будет несовместимая библиотека.

Учитывая, что это не совсем библиотека, насколько я понимаю, т.е. с ней
никто не линкуется, то может альтернативы и не самый плохой вариант.
Лучше бы, конечно, убрать ее из nss совсем, заменив ссылкой на
p11-kit-trust.so, а в случае разлома можно временно вернуть
libnssckbi.so. Проблема в том, как обнаружить этот разлом.

-- 
WBR, Mikhail Efremov


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