Настройка библиотеки ГОСТ для OpenSSL в RELS

Материал из Rosalab Wiki
Перейти к: навигация, поиск

Применимость

  • Приведённая ниже инструкция актуальна для Rosa Enterprise Linux Server (RELS) 6.6 и выше. Предложенная библиотека OpenSSL содержит реализацию алгоритма ГОСТ Р 34.10-2001.
  • Срок действия алгоритма ГОСТ Р 34.10-2001 истекает в 2018 году. Выписка из информационного письма регулятора приведена тут: https://www.tc26.ru/info/new-national-standards/
  • Наличие в ОС реализации алгоритма ГОСТ Р 34.10-2001 не означает автоматического наличия сертификата регулятора на эту реализацию. Проверка контроля встраивания не производилась, сертификат регулятора (ФСБ РФ) на эту реализацию отсутствует. Таким образом, применять эту реализацию можно только в целях осуществления проверок функционирования, либо в соответствии со статьей 1, пункт 2, подпункт 1 152-ФЗ. То есть только для личных нужд, или для тестирования.

Установка и настройка

Сперва удостоверимся, что установлена версия openssl не ниже 1.0.1e-57.res6. Для этого выполним следующую команду:

rpm -aq | grep openssl

если версия отличается - обновим версию библиотеки:

yum update openssl

Убедимся, что после обновления в системе появилась библиотека openssl с поддержкой ГОСТ, например:

find /usr/ -iname "*gost.so"
/usr/lib64/openssl/engines/libgost.so

Активизируем поддержку алгоритма в конфигурационном файле. Так как по умолчанию поддержка ГОСТ отключена:

  • Редактируем файл /etc/pki/tls/openssl.cnf Вначале файла, прямо первой строкой определим дополнительную секцию openssl_conf=openssl_def, например:
#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#
openssl_conf=openssl_def
  • Затем в конец этого же файла вносим описание алгоритма в конфигурационный файл, с учетом верного пути к библиотеке, например:
[openssl_def]
engines = engine_section

# Engine scetion
[engine_section]
gost = gost_section

# Engine gost section
[gost_section]
engine_id = gost
dynamic_path = /usr/lib64/openssl/engines/libgost.so
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
  • Удостоверимся, что библиотека openssl корректно опознала добавленный алгоритм ГОСТ. Для этого выполним:
openssl ciphers|tr ':' '\n'|grep GOST

Ответ системы будет такой:

GOST2001-GOST89-GOST89
GOST94-GOST89-GOST89

Формирование запроса на сертификат с поддержкой алгоритма ГОСТ (пример)

openssl genrsa -out test.example.ru.key 2048
openssl req -new -sha256 -key test.example.ru.key -out test.example.ru.csr
openssl genpkey -algorithm gost2001 -pkeyopt paramset:A -out gost.example.ru.key
openssl req -engine gost -new -key gost.example.ru.key -out gost.example.ru.csr

Для Fresh

В случае с Fresh стоит быть внимательнее с путями:
для 64-х бит:
/usr/lib64/openssl-1.0.2k/engines/libgost.so
для 32-х бит:
/usr/lib/openssl-1.0.2k/engines/libgost.so

остальное без изменений, за исключением работы с пакетным менеджером.