Как установить и настроить stunnel для работы с КриптоПро 4 при интеграции с ГИИС ДМДК

Системный администратор
← На главную

В процессе интеграции информационных систем с государственными сервисами, такими как ГИИС ДМДК, часто возникает необходимость организации защищенного соединения по протоколу TLS с использованием российских криптографических стандартов (ГОСТ) — для автоматизации сопутствующих задач пригодится модуль учета содержания драгоценных металлов в 1С. Для этих целей применяется программа stunnel, адаптированная для работы с КриптоПро CSP. В этой статье мы подробно разберем, как правильно установить, настроить и отладить работу этого программного обеспечения.

Где найти дистрибутив stunnel

Начнем с того, что stunnel (который также часто применяется для получения почты по SSL) не всегда входит в стандартный пакет установки КриптоПро CSP 4.0. Проанализируем, где его можно получить. Официальная версия stunnel-msi распространяется компанией «Крипто-Про» отдельно. Ее можно найти на официальном сайте в разделе сопутствующих продуктов или в составе SDK. Если вы используете версию 4.0, убедитесь, что она обновлена до актуального релиза (не ниже 4.0.9963), так как старые версии могут иметь проблемы с современными алгоритмами ГОСТ 2012.

Пошаговая установка и первичная настройка

Рассмотрим процесс установки службы на ОС Windows. Для корректной работы рекомендуется следовать строгому алгоритму:

  1. Подготовим рабочую директорию. Создадим папку C:\stunnel и поместим туда исполняемые файлы (например, stunnel.x64.exe).
  2. Запустим командную строку от имени администратора.
  3. Выполним регистрацию программы в качестве службы Windows с помощью команды:
    
    c:\stunnel\stunnel.x64 -install
    
  4. После этого в системе появится новая служба с именем Stunnel Service.

Создание конфигурационного файла stunnel.conf

Разберем структуру конфигурационного файла. Файл stunnel.conf необходимо создать в каталоге C:\Windows\System32 (или в папке с программой, в зависимости от версии). Рассмотрим пример типового конфига для работы с ГИИС ДМДК:


output=c:\stunnel\stunnel.log
socket=l:TCP_NODELAY=1
socket=r:TCP_NODELAY=1
debug=7

[https]
client=yes
accept=127.0.0.1:1500
connect=195.209.130.9:443
cert=C:\stunnel\clicer.cer
verify=0

Проанализируем основные параметры:

Работа с сертификатами и закрытыми ключами

Выясним причину, по которой stunnel часто не видит закрытый ключ. Программа stunnel сама по себе не умеет вводить пароли к контейнерам КриптоПро. Поэтому выполнение следующих шагов обязательно:

  1. Установка корневых сертификатов: Убедимся, что все сертификаты Удостоверяющего центра (корневой и промежуточные) установлены в соответствующие хранилища («Доверенные корневые центры» и «Промежуточные центры сертификации») для компьютера.
  2. Личный сертификат: Установим личный сертификат в хранилище «Личное» той учетной записи, под которой будет работать служба.
  3. Сохранение пароля: Зайдем в панель КриптоПро CSP, выберем «Сервис» — «Протестировать». При запросе пароля к контейнеру обязательно установим галочку «Сохранить пароль в системе». Без этого служба не сможет получить доступ к закрытому ключу в фоновом режиме.
  4. Экспорт открытого ключа: Экспортируем сертификат в формате .CER (кодировка DER) и положим его по пути, указанному в параметре cert конфига.

Учетная запись для запуска службы

Это один из самых важных моментов. По умолчанию службы Windows запускаются от имени LocalSystem. Однако контейнеры закрытых ключей пользователей часто хранятся в ветке реестра текущего пользователя (HKEY_CURRENT_USER). Рассмотрим, как это исправить:

Проанализируем ситуацию: если сертификат установлен в хранилище пользователя, то и служба Stunnel Service должна запускаться от имени этого же пользователя. Для этого в оснастке services.msc откроем свойства службы, перейдем на вкладку «Вход в систему» и укажем данные созданного пользователя с паролем.

Решение типичных ошибок запуска

Посмотрим на наиболее частые ошибки, с которыми сталкиваются администраторы:

Ошибка 1069: Служба не запущена из-за ошибки входа в систему.
Эта ошибка означает, что пароль учетной записи пользователя, указанный в настройках службы, неверен или истек. Перепроверьте учетные данные.

Ошибка 1067: Процесс был неожиданно завершен.
Эта ошибка может иметь несколько причин. Разберем их по порядку:

  1. Кодировка конфига: Убедитесь, что файл stunnel.conf сохранен в кодировке ANSI или UTF-8 без BOM. Наличие метки BOM в начале файла приводит к тому, что stunnel не может его прочитать.
  2. Пути к логам: Проверьте, создана ли папка C:\stunnel. Если программа не может создать файл лога по указанному пути, она упадет.
  3. Доступ к ключу: Если в логе (stunnel.log) вы видите сообщения типа Private key not found, значит, либо пароль не был сохранен, либо у пользователя службы нет прав на ветку реестра с ключами.

Практические советы по отладке

Для быстрой диагностики рекомендуется на время настройки остановить службу и запустить stunnel.exe вручную как обычное приложение. В этом случае вы увидите консольное окно с подробным логом в реальном времени. Если в консоли соединение устанавливается успешно, а в режиме службы — нет, значит, проблема однозначно в правах доступа или неверно указанной учетной записи для работы в фоновом режиме.

Также обратим внимание на «обезличенные» сертификаты юридических лиц. Они лучше подходят для работы в режиме службы, так как не привязаны к конкретному физическому лицу, что упрощает их использование в автоматизированных системах обмена данными.

← На главную