Инфраструктура открытых ключей: Удостоверяющий Центр на базе утилиты OpenSSL и SQLite3 (Посткриптум)

q1i1vspugm4raux1pq5chgyysd4.pngВ одном из комментариев, присланным участником garex, в ответ на заявление:

Но сегодня в стандартной версии openssl отсутствует поддержка как ГОСТ Р 34.11–2012, так и ГОСТ Р 34.10–2012. Более того в версии 1.1 поддержка криптографии ГОСТ исключена из стандартной поставки («The GOST engine was out of date and therefore it has been removed.»)

было сказано:

Чем не устраивает вот эта, которую «убрали?» github.com/gost-engine/engine
Пример билда: github.com/rnixik/docker-openssl-gost/blob/master/Dockerfile


Выло решено протестировать эту версию openssl в составе УЦ CAFL63. Используя указанный пример билда, сам openssl и ГОСТ-ый engine собрались и установились без всяких проблем (все тестировалось в среде Linux и устанавливалось в каталог /usr/local/ssl). Естественно, для работы с ГОСТ-ой криптографией (речь идет о ГОСТ Р 34.10–2012, ГОСТ Р 34.11–2012) надо прописать подключение engine-а gost.so в конфигурационной файле openssl.cnf:

 . .
# OpenSSL default section
[openssl_def]
engines = engine_section
# Engine scetion
[engine_section]
gost = gost_section
# Engine gost section
[gost_section]
engine_id = gost
dynamic_path = /usr/local/ssl/lib/engines-1.1/gost.so
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
. . . 


Проверить подключение гостового engine-а можно выполнив команду:

bash-4.3$ /usr/local/ssl/bin/openssl  ciphers
. . . 
GOST2012-GOST8912-GOST8912:GOST2001-GOST89-GOST89
. . .
bash-4.3$


Для просмотра поддерживаемых ГОСТ-вых алгоритмов хэширования достаточно выполнить следующую команду:

bash-4.3$ /usr/local/ssl/bin/openssl  list –digest-algorithms| grep md_gost 
md_gost12_256 
md_gost12_512 
md_gost94 
bash-4.3$


Как видно, с поддержкой российской криптографии в этой версии openssl с подключенным engine-ом все хорошо.

Если подключить утилиту openssl (Средства→Настройки→Системные) в ранее созданном УЦ, то на первый взгляд все заработает. Можно будет просмотреть и запросы и сертификаты. При этом все поля, входящие в DN (отличительное имя) (ИНН, ОГРН, СНИЛС) отображаются верно. Но вот расширения, типа issuerSignTool, subjectSignTool и другие, openssl отказывается поминать:

image

Следует отметить, указанные расширения являются неотъемлемой частью СКПЭП (квалифицированный сертификат ключа проверки электронной подписи), требования к которому утверждены приказом ФСБ от 27 декабря 2011 г. N 795.

Анализ утилиты openssl показал, что она не поддерживает расширения isserSignTool, objectSignTools и другие, введенные ТК-26 для СКПЭП:


Error Loading request extension section v3_req
139974322407168: error:22097081: X509 V3 routines: do_ext_nconf: unknown extension: crypto/x509v3/v3_conf.c:82:
139974322407168: error:22098080: X509 V3 routines: X509V3_EXT_nconf: error in extension: crypto/x509v3/v3_conf.c:47: name=subjectSignTool, value=Наименование СКЗИ пользователя

Error Loading request extension section v3_req
140154981721856: error:22097081: X509 V3 routines: do_ext_nconf: unknown extension: crypto/x509v3/v3_conf.c:82:
140154981721856: error:22098080: X509 V3 routines: X509V3_EXT_nconf: error in extension: crypto/x509v3/v3_conf.c:47: name=subjectSignTool, value=Наименование СКЗИ пользователя

Error Loading extension section cert_ext
140320065406720: error:0D06407A: asn1 encoding routines: a2d_ASN1_OBJECT: first num too large: crypto/asn1/a_object.c:61:
140320065406720: error:2208206E: X509 V3 routines: r2i_certpol: invalid object identifier: crypto/x509v3/v3_cpols.c:135: section:, name: KC1ClassSignTool, value:
140320065406720: error:22098080: X509 V3 routines: X509V3_EXT_nconf: error in extension: crypto/x509v3/v3_conf.c:47: name=certificatePolicies, value=KC1ClassSignTool, KC2ClassSignTool

В связи с этим, УЦ CAFL63 также отказывался создавать запросы и выпускать сертификаты на openssl, так как он строго следил за соблюдением требований к СКПЭПЭ:

-o11yyjfkaxxvksnyclhnalp9iy.png

Вместе с тем, порой эти требования бывают излишними, например, при использовании сертификатов в учебном процессе, для внутрикорпоративного документооборота (подписание, шифрование документов), для доступа по https к корпоративным системам (сайты, порталы и т.д, так называемые, SSL-сертификаты).
Исходя их этого была проведена доработка CAFL63. Теперь стало возможным не заполнять поля расширений (Средства→Настройки→Системные):

pldtvusmupwlmnatp79ml_m8urq.png

Утилита CAFL63 позволяет просматривать сторонние запросы (Сертификаты→Просмотреть сторонний сертификат или кновка «Просмотр внешнего X509» на вкладке «Сертификаты»), но с тем же недостатком:

3eimt0x6karpwabs91_fxo1ir_g.png

Эта доработка позволяет уже сегодня использовать УЦ CAFL63 в учебных целях, для организации корпоративного документооборота и т.п. Все изменения включены в обновленный дистрибутив.

Это все, что хотелось сказать в постскриптуме.

© Habrahabr.ru