Одним из самых популярных вопросов среди пользователей Fedora, использующих данный дистрибутив в организациях, является добавление поддержки российской криптографии в библиотеку openssl.
Введение
Начиная с openssl версии 1.1 пользователи могут загружать не входящие в поставку данной библиотеки криптографические модули. Для поддержки российской криптографии был реализован gost-engine.
В настоящее время gost-engine распространяется под модифицированной лицензией BSD и уже доступен в основном репозитории Fedora, внутри пакета openssl-gost-engine.
Шаг 1. Установка пакета
Установим openssl-gost-engine из репозиториев:
sudo dnf install openssl-gost-engine
Шаг 2. Настройка 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.
Шаг 3. Проверка работы
Проверим работу OpenSSL с поддержкой ГОСТ посредством запуска теста производительности симметричного алгоритма шифрования ГОСТ-89:
openssl speed -evp gost89
Если всё было сделано верно, мы увидим результат его работы.
Пакет openssl-gost-engine был добавлен в репозитории Fedora, поэтому статья обновлена. Удалена необходимость ручной сборки.
GOST любовно выпилен в 30ке майнтейнерами в некоторых пакетах (типа softhsm) и , главное — в fedora-crypto-policies ( не добавив / вернув GOST , с ходу местами не «заведется» ). В 31 добавлен модуль GOST в policies, но там «от балды» похоже пока — те не факт что в релизе сразу будет работать без бубна ( да и то нужно будет не забыть поставить профиль DEFAULT:GOST и пройтись update-crypto-policies )
Он никогда не добавлялся в конфигурацию по умолчанию, т.к. противоречит экспортным ограничениям на строгую криптографию США (компания Red Hat расположена в данной стране), а также имеет закрытую реальную таблицу перестановок.
После установки пакета с gost-engine его нужно вручную прописывать в файлах конфигурации.
В openssl 3.0:
Т.е. с переходом на openssl 3.x — как думаете везде полноценно будет работать ГОСТ?
Поддержка GOST была добавлена в OpenSSL CMS, который используется для подписи и шифрования документов и электронных писем.
Это не отменяет обязательности установки gost-engine. Последний, кстати, недавно обновился и поддерживает OpenSSL 3.0.