[Comm] import CA and intermediate certificates

Vladimir Didenko vladimir.didenko на gmail.com
Чт Авг 6 14:14:49 MSK 2015


6 августа 2015 г., 3:18 пользователь Michael A. Kangin написал:

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

Одной красной кнопки для этой задачи нет. Разные ssl библиотеки, и даже
разные приложения, использующие одну и ту же библиотеку могут пользоваться
различными хранилищами корневых сертификатов. Яркий пример - firefox и
chromium. Оба используют libnss, но имеют собственные хранилища.

Если начинать с библиотек, то как минимум нужно смотреть на libnss и
openssl.

OpenSSL по дефолту (у нас) использует бандл
/usr/share/ca-certificates/ca-bundle.crt, а также все файлы из
/var/lib/ssl/certs . Эти файлы должны иметь определенное имя вида <хэш от
subject>.<число>. Хэш можно посчитать при помощи утилит openssl. Например:

$ openssl x509 -hash -fingerprint -noout -in ca.crt
5f8adca0
SHA1 Fingerprint=59:04:C9:FB:74:ED:EE:BD:BA:99:67:53:BF:3A:48:09:93:3D:E1:15
$ sudo install -m 444 ca.crt /var/lib/ssl/certs/5f8adca0.0

У libnss другая идеология по менеджменту сертификатов - вместо сертификатов
в pem формате используется несколько баз данных. Системные хранилища
находятся в /etc/pki/nssdb/ . Менеджмент этой базы данных производится при
помощи утилиты certutil -
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil
.

Ну и теперь самое интересное - браузеры для каждого пользователя создают
свою базу хранилища сертификатов, firefox в ~/.mozilla/firefox/<ID
профиля>, хромиум в ~/.pki/nssdb. Импортировать корневые сертификаты
придется в обеи базы для каждого пользователя. Можно через certutil, можно
через интерфейс самих браузеров.

Теперь, что касается промежуточных сертификатов. OpenSSL не умеет загружать
"дефолтные" промежуточные сертификаты. А вот в базу libnss промежуточные
сертификаты добавлять можно. Правда встает вопрос - а зачем, вообще,
импортировать промежуточные сертификаты? Правильно настроенный сервер
всегда высылает цепочку со всеми промежуточными сертификатами, так что явно
добавлять их смысла большого нету, тем более, что браузеры сами их
кэшируют, как только увидят в первый раз.

P.S. А еще есть GnuTLS, но с ним я ни разу не работал, может, кто еще
подскажет. Он точно использует бандл
/usr/share/ca-certificates/ca-bundle.crt, а вот можно ли ему подсунуть свои
дополнительные сертификаты, которые бы рассматривались как дефолтные
системные, я не знаю.

-- 
С уважением,
Владимир.
----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.altlinux.org/pipermail/community/attachments/20150806/ee9db1e1/attachment.html>


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