MyTetra Share
Делитесь знаниями!
Установка OpenSSL GOST Engine на Debian 12
Время создания: 03.04.2026 10:45
Раздел: Компьютер - Linux - Безопасность
Запись: xintrea/mytetra_syncro/master/base/1775202330d806ppvctr/text.html на raw.githubusercontent.com

GOST-engine – это модуль для OpenSSL, реализующий поддержку российских криптографических алгоритмов в соответствии с ГОСТ Р 34.10-2012, ГОСТ Р 34.11-2012 и другими стандартами. Он позволяет использовать ГОСТ-алгоритмы для цифровых подписей, хэширования, симметричного и асимметричного шифрования.

Основные возможности:

  • Поддержка алгоритмов электронной подписи (GOST R 34.10-2001, GOST R 34.10-2012).
  • Реализация хэш-функций (GOST R 34.11-94, GOST R 34.11-2012).
  • Симметричное шифрование (GOST 28147-89, Кузнечик, Магма).
  • Использование ГОСТ-алгоритмов в TLS-соединениях.

Официальная страница GOST-engine на Github — https://github.com/gost-engine/engine

Ниже пошагово разберем как собрать и установить GOST-engine самой актуальной версии на Debian 12 и выпустим тестовый сертификат по ГОСТ.


Установка зависимостей

Устанавливаем необходимые пакеты зависимостей:


apt-get install g++ gcc make pkg-config git curl libssl-dev -y


Установка CMake

Для сборки GOST-engine нужна версия CMake 3.0 или новее. Если cmake старый (выясняется командой cmake --version), надо выполнить установку актуального релиза.

Клонируем репозиторий CMake с GitHub и переходим в клонированный репозиторий:


git clone https://github.com/Kitware/CMake.git CMake

cd CMake


Переключаемся на актуальный релиз выполнив команду:


LATEST_TAG=$(curl -s curl -s https://api.github.com/repos/Kitware/CMake/releases/latest | grep -oP '"tag_name": "\K[^"]+')

git checkout $LATEST_TAG


Выполняем сборку CMake:


./bootstrap --prefix=/usr


make -j$(nproc)

make install


cd ..


Для проверки, выведем информация об установленной версии:


cmake --version


OpenSSL

Проверяем установленную версию OpenSSL, она должна быть выше 3.0:


openssl version -v

OpenSSL 3.0.15 3 Sep 2024 (Library: OpenSSL 3.0.15 3 Sep 2024)


Установка GOST-engine

Клонируем репозиторий GOST-engine с GitHub и переходим в клонированный репозиторий:


git clone https://github.com/gost-engine/engine.git gost-engine

cd gost-engine/


Переключаемся на актуальный релиз выполнив команду:


LATEST_TAG=$(curl -s https://api.github.com/repos/gost-engine/engine/releases/latest | grep -oP '"tag_name": "\K[^"]+')

git checkout $LATEST_TAG


Сборка

Выполняем сборку и установку gost-engine:


git submodule update --init

mkdir build && cd build


cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr

cmake --build . --config Release

cmake --build . --target install --config Release


Настройка

Настроим openssl на работу с gost-engine, для этого в конфигурационный файл /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


Проверка

Выведем список доступных криптографических движков, в выводе должен присутствовать GOST:


> openssl engine

(rdrand) Intel RDRAND engine

(dynamic) Dynamic engine loading support

(gost) Reference implementation of GOST engine


Выведем список доступных шифров GOST:


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

GOST2012-MAGMA-MAGMAOMAC

GOST2012-KUZNYECHIK-KUZNYECHIKOMAC

LEGACY-GOST2012-GOST8912-GOST8912

IANA-GOST2012-GOST8912-GOST8912

GOST2001-GOST89-GOST89


Выведем доступные GOST провайдеры:


> openssl engine -c | grep gost | tr -d '[]' | tr ',' '\n'

(gost) Reference implementation of GOST engine

gost89

gost89-cnt

gost89-cnt-12

gost89-cbc

kuznyechik-ecb

kuznyechik-cbc

kuznyechik-cfb

kuznyechik-ofb

kuznyechik-ctr

magma-ecb

kuznyechik-mgm

magma-cbc

magma-ctr

magma-ctr-acpkm

magma-ctr-acpkm-omac

magma-mgm

kuznyechik-ctr-acpkm

kuznyechik-ctr-acpkm-omac

magma-kexp15

kuznyechik-kexp15

md_gost94

gost-mac

md_gost12_256

md_gost12_512

gost-mac-12

magma-mac

kuznyechik-mac

kuznyechik-ctr-acpkm-omac

gost2001

id-GostR3410-2001DH

gost-mac

gost2012_256

gost2012_512

gost-mac-12

magma-mac

kuznyechik-mac

magma-ctr-acpkm-omac

kuznyechik-ctr-acpkm-omac


Выпуск сертификата GOST

Сгенерируем закрытый ключ и создадим сертификат с подписью ГОСТ следующей командой:


openssl req -x509 -newkey gost2012_256 -pkeyopt paramset:A -nodes -keyout key.pem -out cert.pem -md_gost12_256


Выведем информацию о выпущенном сертификате:


openssl x509 -in cert.pem -text -noout


Вывод:


Certificate:

Data:

Version: 3 (0x2)

Serial Number:

6b:e9:a1:34:89:77:3a:80:6d:fb:7d:15:f7:46:2b:27:e5:f7:47:e0

Signature Algorithm: GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)

Issuer: C = RU, ST = Moscow, L = Moscow, O = Internet Widgits Pty Ltd, CN = gost.jakondo.ru

Validity

Not Before: Mar 10 11:23:30 2025 GMT

Not After : Apr 9 11:23:30 2025 GMT

Subject: C = RU, ST = Moscow, L = Moscow, O = Internet Widgits Pty Ltd, CN = gost.jakondo.ru

Subject Public Key Info:

Public Key Algorithm: GOST R 34.10-2012 with 256 bit modulus

Public key:

X:5F6B78DF32D5CFCEB349076D8532A1365308CBD15A7523B5B826A1F6AB440DC1

Y:AE32622F9789D29C11F8CEA06A78F999E0807389C2A338D1A26FCB0F744A7E0A

Parameter set: id-GostR3410-2001-CryptoPro-A-ParamSet

X509v3 extensions:

X509v3 Subject Key Identifier:

F3:16:33:E4:8D:E2:4E:7F:42:27:91:1B:85:F6:08:11:76:A3:C7:06

X509v3 Authority Key Identifier:

F3:16:33:E4:8D:E2:4E:7F:42:27:91:1B:85:F6:08:11:76:A3:C7:06

X509v3 Basic Constraints: critical

CA:TRUE

Signature Algorithm: GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)

Signature Value:

19:07:10:f0:02:5d:35:2f:8c:79:64:6f:09:db:25:f1:d9:89:

85:9f:26:3d:16:92:ec:1a:59:1e:74:d8:b6:69:49:fd:84:a7:

19:5f:cc:e5:df:74:c5:89:2d:0b:69:72:1b:62:7e:f8:df:0b:

34:da:72:95:19:f7:1e:a6:68:6e



Так же в этом разделе:
 
MyTetra Share v.0.67
Яндекс индекс цитирования