Настройка поддержки алгоритмов ГОСТ

Поддержка алгоритмов ГОСТ в криптографической библиотеке OpenSSL необходима для использования сертификатов безопасности на основе российских алгоритмов шифрования. С данными сертификатами можно подписывать PDF документы.

Пакет библиотек, поддерживающих методы шифрования по алгоритмам ГОСТ, openssl-gost-engine не включён в дистрибутивы Debian 12 и Ubuntu 23. Для его использования необходимо скачать исходные файлы с удаленного репозитория, а затем откомпилировать и установить.

В данной статье рассматривается настройка алгоритмов ГОСТ на Ubuntu двумя способами.

Для сборки и установки пакета GOST Engine в системе должны быть предварительно установлены:

  • библиотека OpenSSL 3.0;
  • компилятор GCC;
  • утилита CMake (версия 3.0 или выше, рекомендуется версия 3.18).

Настройка поддержки алгоритмов ГОСТ с компиляцией (рекомендуется)

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

$ git clone https://github.com/gost-engine/engine
$ cd engine
$ git submodule update --init
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ cmake --build . --config Release
$ sudo cmake --build . --target install --config Release

Убедитесь, что библиотека gost.so установлена в каталог OpenSSL. Выполните следующую команду:

$ openssl version -e

В терминале должна отобразиться соответствующая директория:

Вывод пути к папке с библиотеками в терминале Linux

Путь к каталогу OpenSSL может различаться в зависимости от версии операционной системы и пакета GOST Engine, используемыми на текущий момент.

Убедитесь, что вышеуказанный каталог содержит библиотеку gost.so. Выполните следующую команду:

$ ls /usr/lib/x86_64-linux-gnu/engines-3

Команда должна вывести в терминал список файлов, содержащихся в указанном каталоге.

Вывод пути к папке с библиотеками в терминале Linux

Для использования сертификатов OpenSSL с алгоритмами ГОСТ необходимо также отредактировать файл конфигурации /etc/ssl/openssl.cnf. Файл конфигурации должен включать нижеуказанные параметры. Добавьте их в начало файла перед первым заголовком раздела в квадратных скобках:

openssl_conf = openssl_def

[openssl_def]
engines = engine_section

[engine_section]
gost = gost_section

[gost_section]
engine_id = gost
dynamic_path = /usr/lib/x86_64-linux-gnu/engines-3/gost.so
default_algorithms = ALL

Проверить поддержку алгоритмов ГОСТ можно с помощью команды:

$ openssl ciphers | tr ':' '\n' | grep GOST

Команда должна вывести в терминал информацию, аналогичную той, что указана на скриншоте ниже:

Вывод алгоритмов ГОСТ в терминале

Настройка поддержки алгоритмов ГОСТ без компиляции

Скачайте архив с файлами gost.so и openssl.cnf, которые были откомпилированы на Ubuntu, по ссылке ниже:
https://code-industry.ru/public/files_to_copy_gostso_openssl.tar.gz

Для разархивирования файлов выполните следующую команду:

$ tar -xf <путь к архиву>

Скопируйте файлы gost.so и openssl.cnf с заменой в соответствующие каталоги. Выполните следующие команды:

$ sudo cp <путь к файлу gost.so> /usr/lib/x86_64-linux-gnu/engines-3
$ sudo cp <путь к файлу openssl.cnf> /etc/ssl/

Убедитесь, что файлы были действительно обновлены. Выполните команды:

$ ls /usr/lib/x86_64-linux-gnu/engines-3 -lt | head -n 5

Данная команда выведет в терминал список последних измененных файлов в указанном каталоге.

Вывод изменённых файлов в каталоге OpenSSL на Linux

$ ls /etc/ssl/ -lt | head -n 5

Вывод изменённых файлов в каталоге OpenSSL на Linux