[devel] Взгляд на сертификаты в /usr/share/ca-certificates/ca-bundle.crt и сертификаты УЦ РФ
Vitaly Lipatov
lav на altlinux.ru
Ср Авг 2 19:24:09 MSK 2017
Alexey Gladkov писал 2.8.17 18:29:
> On Wed, Aug 02, 2017 at 05:34:57PM +0300, Vitaly Lipatov wrote:
>> Alexey Gladkov писал 2.8.17 2:48:
>> > On Wed, Aug 02, 2017 at 01:57:04AM +0300, Vitaly Lipatov wrote:
>> >> Это вы разработчикам Go, Qt и прочим, которые не осилили?
>> >> Я подозреваю, что ничего нет в документации.
>> >
>> > Что-то я не очень понял в чём проблема в golang ?
>>
>> Я приводил багу об этом в первом письме:
>> GO не находит корневой сертификат
>> https://bugzilla.altlinux.org/show_bug.cgi?id=29449
>
> Эта бага закрыта 4 года назад. Список приведённый в этой баге
> показывает,
> что нет стандартного места, где должны быть расположены сертификаты.
> Это
> не проблема языка.
Это не проблема языка. Возможно, проблема отсутствия стандартизации или
механизма, позволяющего получить доступ к набору сертификатов. Допустим,
проблема отсутствия crypto api на платформе.
>
>> Проблема в том, что разработчикам по явно архитектурной недоработке
>> приходится в каждой программе / библиотеке самостоятельно отслеживать
>> расположение файла с сертификатами,который к тому же скачет в
>> зависимости от дистрибутива.
>
> Я всё ещё не понимаю о какой недоработке ты говоришь.
>
> Что мы держим ca-bundle.crt не там, где большинство дистрибутивов ?
Нет, нет, только о том, что для Linux-платформ что-то не додумали на
тему доступного для различных потребителей хранилища сертификатов.
Вот Владимир спрашивал
> А X509_get_default_cert_*() не решают эту проблему?
Это то самое, о чём я спрашиваю? Надо будет проверить.
Вот как вопрос с получением пути решён в библиотеке python requests
# cat /usr/lib/python2.7/site-packages/requests/certs.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
requests.certs
~~~~~~~~~~~~~~
This module returns the preferred default CA certificate bundle.
If you are packaging Requests, e.g., for a Linux distribution or a
managed
environment, you can change the definition of where() to return a
separately
packaged CA bundle.
We return "/etc/pki/tls/certs/ca-bundle.crt" provided by the
ca-certificates
package.
"""
try:
from certifi import where
except ImportError:
def where():
""" Don't use the certs bundled with requests, use
ca-certificates. """
return "/etc/pki/tls/certs/ca-bundle.crt"
И они уже три года обсуждают, что же тут можно сделать
https://github.com/requests/requests/pull/1907
Как я вижу решение.
X509_get_default_cert_dir() внезапно начинает возвращать каталог, где
могут лежать (корневые) сертификаты, используемые openssl и её
пользователями.
Возвращаемый ею путь правильно используется в программах, и все штучки
типа прибивания гвоздями путей забываем, как страшный сон.
Понятно, что такая функция не может находиться (только) в openssl,
потому что не все её используют (к счастью или нет).
--
С уважением,
Виталий Липатов,
Etersoft
Подробная информация о списке рассылки Devel