Включение поддержки ГОСТ в OpenSSL на Ubuntu

Обновлено и опубликовано Опубликовано:

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

Подготовка системы

Для включения поддержки ГОСТ нам нужен пакет OpenSSL версии 1.1.1 и выше. Проверить текущую версию можно командой:

openssl version

Мы должны увидеть что-то на подобие:

OpenSSL 1.1.1n  15 Mar 2022

Если версия ниже, обновляем пакет. Для этого переходим к инструкции Как обновить OpenSSL на Linux.

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

apt install libengine-gost-openssl1.1

Мы готовы к настройке OpenSSL.

Настройка OpenSSL

После установки пакета libengine-gost-openssl в системе появляется файл gost.so. Его местоположение может быть разным, в зависимости от версий. Найдем данный файл командой:

find / -name gost.so

В моем примере данный файл находился в корне системы. Это не очень правильно. Перенесем его в каталог, где должны находиться библиотеки в Ubuntu:

mv /gost.so /usr/lib/x86_64-linux-gnu/

Теперь откроем конфигурационный файл openssl:

vi /etc/ssl/openssl.cnf

В начало файла добавим:

openssl_conf = openssl_def

* файл может содержать описание нескольких конфигураций. Директива openssl_conf указывает, какую конфигурацию должен использовать OpenSSL.

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

В конец файла добавим:

[openssl_def]
engines = engine_section

[engine_section]
gost = gost_section

[gost_section]
engine_id = gost
dynamic_path = /usr/lib/x86_64-linux-gnu/gost.so
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet

* обратите внимание на опцию dynamic_path, в которой мы указываем полный путь до файла gost.so. Его мы переносили в каталог /usr/lib/x86_64-linux-gnu.

Проверим, что openssl поддерживает новые алгоритмы — для этого вводим команду:

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

Мы должны увидеть что-то на подобие:

LEGACY-GOST2012-GOST8912-GOST8912
IANA-GOST2012-GOST8912-GOST8912
GOST2001-GOST89-GOST89

Поддержка ГОСТ в OpenSSL добавлена.

Создание ГОСТ-сертификата

Создадим сертификат на основе алгоритма шифрования ГОСТ. Вводим такую команду:

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

* это простая команда, которая сформирует открытый ключ cert.pem и закрытый cert.key с российским алгоритмом безопасности gost2012_256.

Система задаст несколько вопросов, после чего будут сформированы ключи.

Посмотрим на открытый ключ:

openssl x509 -text -in cert.pem

Мы увидим что-то на подобие:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            04:51:9c:34:ba:d9:70:51:35:1f:9a:b6:a4:12:9a:0f:61:4d:2e:f2
        Signature Algorithm: GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)

* Обратите внимание на Signature Algorithm.

# Ubuntu # Безопасность
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет