Настройка поддержки алгоритмов ГОСТ
Поддержка алгоритмов ГОСТ в криптографической библиотеке 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
В терминале должна отобразиться соответствующая директория:
Путь к каталогу OpenSSL может различаться в зависимости от версии операционной системы и пакета GOST Engine, используемыми на текущий момент.
Убедитесь, что вышеуказанный каталог содержит библиотеку gost.so. Выполните следующую команду:
$ ls /usr/lib/x86_64-linux-gnu/engines-3
Команда должна вывести в терминал список файлов, содержащихся в указанном каталоге.
Для использования сертификатов 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
Данная команда выведет в терминал список последних измененных файлов в указанном каталоге.
$ ls /etc/ssl/ -lt | head -n 5