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

в 10:38, , рубрики: certificate, open source, openssl, PKCS#10, pkcs#12, PKI, request, sqlite, sqlite3, tcl/tk, ГОСТ 34.10-2012, информационная безопасность, криптография

Инфраструктура открытых ключей: Удостоверяющий Центр на базе утилиты OpenSSL и SQLite3 (Посткриптум) - 1В одном из комментариев, присланным участником 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, так как он строго следил за соблюдением требований к СКПЭПЭ:

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

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

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

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

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

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

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

Автор: saipr

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js