Подключаем алгоритмы ГОСТ к openssl на Linux
На одном из проектов для согласования работы нескольких сервисов необходимо было обмениваться сообщениями, подписанными алгоритмом ГОСТ 34.10-2012.
🔶 Формирование сообщений и их подпись производим на сервере на базе Debian 11.
🔶 Для подписи сообщений используем openssl с поддержкой алгоритмов ГОСТ.
➡️ Установка
1
2
3
4
5
# ставим / обновляем криптографическую библиотеку
sudo apt install openssl
# добавляем поддержку алгоритмов шифрования ГОСТ
sudo apt install libengine-gost-openssl1.1
➡️ Настройка
- Ищем установленную ранее библиотеку поддержки ГОСТ
1
2
# find / -name gost.so
/usr/lib/x86_64-linux-gnu/engines-1.1/gost.so
- Идем в конфигурационный файл openssl (
/etc/ssl/openssl.cnf)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# в начале файла находим и меняем конфигурацию,
# которую будет использовать openssl
openssl_conf = openssl_def
# в конец файла добавляем следующие секции
# (в dynamic_path указываем путь до найденной ранее библиотеки gost.so)
[openssl_def]
engines = engine_section
[engine_section]
gost = gost_section
[gost_section]
engine_id = gost
dynamic_path = /usr/lib/x86_64-linux-gnu/engines-1.1/gost.so
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
➡️ Проверка
- Проверяем поддержку установленных алгоритмов
1
2
3
4
# openssl ciphers | tr ':' '\n' | grep GOST
GOST2012-GOST8912-GOST8912
GOST2001-GOST89-GOST89
- Проверяем подключенный движок gost
1
2
3
4
5
# openssl engine gost -c -t
(gost) Reference implementation of GOST engine
[gost89, gost89-cnt, gost89-cnt-12, gost89-cbc, grasshopper-ecb, grasshopper-cbc, grasshopper-cfb, grasshopper-ofb, grasshopper-ctr, md_gost94, gost-mac, md_gost12_256, md_gost12_512, gost-mac-12, gost2001, gost-mac, gost2012_256, gost2012_512, gost-mac-12]
[ available ]
- Подписываем документ с использованием закрытого ключа key.pem
1
openssl dgst -sign key.pem -engine gost test.txt | base64 | tr -d "\n"
Больше полезной информации в
Telegram-канале
