Добавляем поддержку ГОСТ для openssl в Fedora

Одним из самых популярных вопросов среди пользователей Fedora, использующих данный дистрибутив в организациях, является добавление поддержки российской криптографии в библиотеку openssl.

Введение

Начиная с openssl версии 1.1 пользователи могут загружать не входящие в поставку данной библиотеки криптографические модули. Для поддержки российской криптографии был реализован gost-engine.

В настоящее время gost-engine распространяется под модифицированной лицензией BSD исключительно в виде исходных текстов, поэтому нам потребуется собрать RPM пакет для Fedora по готовому SPEC файлу самостоятельно.

Шаг 1. Подготовка к сборке

Для начала установим в систему базовый набор, необходимый для сборки RPM:

sudo dnf install rpm-build spectool git mock

Подготовим среду rpmbuild:

rpmdev-setuptree

Также произведём подготовку mock, как сказано в одноимённой статье.

Шаг 2. Загрузка исходников

Клонируем репозиторий с необходимым для сборки SPEC файлом:

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

Загрузим исходные тексты модулей:

cd gost-engine
spectool -g -R gost-engine.spec

Шаг 3. Подготовка SRPM пакета

Сгенерируем SRPM пакет для дальнейшего использования в mock:

cd gost-engine
rpmbuild -bs gost-engine.spec

Созданный SRPM появится в каталоге ~/rpmbuild/SRPMS.

Шаг 4. Сборка RPM пакета в mock

Теперь, наконец, приступим непосредственно к сборке:

mock -r fedora-$(rpm -E %fedora)-$(uname -m) --rebuild ~/rpmbuild/SRPMS/gost-engine*.src.rpm --resultdir ~/result

Итоговые RPM файлы будут записаны в каталог ~/result.

Шаг 5. Установка собранного пакета

Установим пакет:

sudo dnf install ~/result/gost-engine-1.1.0.3-1.20181118git0b50e00.fc29.x86_64.rpm

Полное имя файла RPM пакета указано на момент написания статьи, поэтому его нужно исправить в соответствие с полученным после сборки результатом.

Устанавливать -debuginfo и -debugsource пакеты не требуется.

Шаг 6. Настройка OpenSSL

OpenSSL с настройках по умолчанию не загружает нестандартные модули, поэтому нам необходимо вручную отредактировать его главный файл конфигурации /etc/pki/tls/openssl.cnf и внести соответствующие правки:

sudoedit /etc/pki/tls/openssl.cnf

Найдём в данном файле строку:

ssl_conf = ssl_module

После неё добавим следующее:

engines = custom_engines

[ custom_engines ]

gost = gost_module

[ gost_module ]

engine_id = gost
dynamic_path = /usr/lib64/engines-1.1/gost.so
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet

Здесь /usr/lib64/engines-1.1/gost.so — полный путь к установленному модулю ГОСТ. Для 32-битных систем он будет иным — /usr/lib/engines-1.1/gost.so.

Изменения вступают в силу после перезапуска всех приложений, использующих OpenSSL.

Шаг 7. Проверка работы

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

openssl speed -evp gost89

Если всё было сделано верно, мы увидим результат его работы.

Пока нет комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *