ГОСТ 89 и stunnel?

Появилась необходимость создать соединение через stunnel (сервер и клиент) по ГОСТ шифрованию. У меня получилось настроить stunnel, но только автоматическим выбором метода шифрования. Если я в конфиге stunnel.conf пишу ciphers = GOST2001-GOST89-GOST89, то stunnel вылетает с ошибкой
SSL_CTX_set_cipher_list: 1410D0B9: error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match



Версия openssl: OpenSSL 1.0.1e 11 Feb 2013, в конфиге прописана подгрузка libgost.so и если ввести openssl ciphers -v, то в списке есть

GOST2001-GOST89-GOST89 SSLv3 Kx=unknown Au=unknown Enc=unknown Mac=unknown
GOST94-GOST89-GOST89 SSLv3 Kx=unknown Au=unknown Enc=unknown Mac=unknown


Полный лог запуска stunnel:
Clients allowed=500
stunnel 4.56 on x86_64-unknown-linux-gnu platform
Compiled/running with OpenSSL 1.0.1e 11 Feb 2013
Threading:PTHREAD Sockets:POLL,IPv6 SSL:ENGINE,OCSP,FIPS
Reading configuration from file /stunnel/etc/stunnel/stunnel.conf.server
Enabling support for engine 'gost'
Initializing engine 1
Engine 1 initialized
FIPS mode is disabled
Compression enabled: 2 algorithm(s)
Snagged 64 random bytes from /root/.rnd
Wrote 1024 new random bytes to /root/.rnd
PRNG seeded successfully
Initializing service [https]
Certificate: /etc/ssl/certs/crt.crt
Certificate loaded
Key file: /etc/ssl/certs/private.key.pem
Private key loaded
Could not load DH parameters from /etc/ssl/certs/crt.crt
Using hardcoded DH parameters
DH initialized with 2048-bit key
ECDH initialized with curve prime256v1
SSL_CTX_set_cipher_list: 1410D0B9: error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match
Service [https]: Failed to initialize SSL context
str_stats: 12 block(s), 1081 data byte(s), 696 control byte(s)



Как заставить stunnel работать с ГОСТ?
  • Вопрос задан
  • 7410 просмотров
Решения вопроса 1
@Armageddon Автор вопроса
Решил проблему с ГОСТом. Очень не хотелось лезть в исходный код, но зато я нашёл проблему.
Я рассмотрел версию 4.29 (стабильная для squeeze), 4.53 (стабильная для wheezy) и 4.56 (последняя стабильная)

Для 4.29 нужно отредактировать файл src/ssl.c, найти строчку s_log(LOG_DEBUG, "Engine %d initialized", current_engine+1); и добавить за ней инициализацию SSL библиотеки. Без этой команды stunnel не сможет работать с engine gost, это можно посмотреть в документации к openssl по разработке приложений: SSL_library_init();
Далее останется только поменять для себя правила сборки в debian/rules (пути до openssl) и запустить dpkg-buildpackage

Для 4.53 и 4.56 отредактировать нужно src/options.c, найти строчку s_log(LOG_DEBUG, "Engine %d initialized", current_engine+1); и добавить SSL_library_init();
Можно конфигурировать и устанавливать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
ntkt
@ntkt
Потомственный рыцарь клавиатуры и паяльника
Везде пишут, что для работы с ГОСТ нужен, якобы, пропатченный stunnel.
Как именно патчить — не ясно, но вот здесь есть намеки, что надо пересобрать с опцией --disable-rsa
(Эта компания, вроде бы, и добавила код с поддержкой ГОСТ в openssl, кстати)
cryptocom.ru/opensource/stunnel.html
Stunnel поддерживает возможность подгрузки engine через свой конфигурационный файл. Поэтому модификация исходных текстов не требуется. Но при сборке скрипту configure требуется указать опцию --disable-rsa. Stunnel, собранный без этой опции поддерживает только алгоритм RSA. С этой опцией поддерживаются все алгоритмы, поддерживаемые нижележащей OpenSSL, в том числе и RSA.

ВНИМАНИЕ! Stunnel не считывает стандартный конфигурационный файл OpenSSL. Поэтому engine должна быть размещена в умолчательном каталоге engines установленной OpenSSL.
Ответ написан
@bondbig
А какой в этом смысл? Само по себе использование алогоритма ГОСТ не делает решение пригодным к использованию с точки зрения законодательства. Необходимо получать сертификат на корректность встраивания, иначе решение нельзя использовать для защиты классифицированных систем.
Или это просто упражнение для развлечения?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы