В процессе интеграции информационных систем с государственными сервисами, такими как ГИИС ДМДК, часто возникает необходимость организации защищенного соединения по протоколу TLS с использованием российских криптографических стандартов (ГОСТ) — для автоматизации сопутствующих задач пригодится модуль учета содержания драгоценных металлов в 1С. Для этих целей применяется программа stunnel, адаптированная для работы с КриптоПро CSP. В этой статье мы подробно разберем, как правильно установить, настроить и отладить работу этого программного обеспечения.
Начнем с того, что stunnel (который также часто применяется для получения почты по SSL) не всегда входит в стандартный пакет установки КриптоПро CSP 4.0. Проанализируем, где его можно получить. Официальная версия stunnel-msi распространяется компанией «Крипто-Про» отдельно. Ее можно найти на официальном сайте в разделе сопутствующих продуктов или в составе SDK. Если вы используете версию 4.0, убедитесь, что она обновлена до актуального релиза (не ниже 4.0.9963), так как старые версии могут иметь проблемы с современными алгоритмами ГОСТ 2012.
Рассмотрим процесс установки службы на ОС Windows. Для корректной работы рекомендуется следовать строгому алгоритму:
C:\stunnel и поместим туда исполняемые файлы (например, stunnel.x64.exe).
c:\stunnel\stunnel.x64 -install
Разберем структуру конфигурационного файла. Файл 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
Проанализируем основные параметры:
output — путь к файлу лога. Это критически важный параметр для отладки.accept — локальный адрес и порт, на который ваше прикладное ПО (например, 1С) будет отправлять запросы — для этого подойдёт готовая интеграция с ГИИС ДМДК из 1С.connect — адрес сервера ГИИС ДМДК. Для промышленного контура это обычно 195.209.130.9.cert — путь к экспортированному файлу вашего сертификата (открытый ключ).debug=7 — максимальный уровень логирования, необходимый на этапе настройки.Выясним причину, по которой stunnel часто не видит закрытый ключ. Программа stunnel сама по себе не умеет вводить пароли к контейнерам КриптоПро. Поэтому выполнение следующих шагов обязательно:
.CER (кодировка DER) и положим его по пути, указанному в параметре cert конфига.Это один из самых важных моментов. По умолчанию службы Windows запускаются от имени LocalSystem. Однако контейнеры закрытых ключей пользователей часто хранятся в ветке реестра текущего пользователя (HKEY_CURRENT_USER). Рассмотрим, как это исправить:
Проанализируем ситуацию: если сертификат установлен в хранилище пользователя, то и служба Stunnel Service должна запускаться от имени этого же пользователя. Для этого в оснастке services.msc откроем свойства службы, перейдем на вкладку «Вход в систему» и укажем данные созданного пользователя с паролем.
Посмотрим на наиболее частые ошибки, с которыми сталкиваются администраторы:
Ошибка 1069: Служба не запущена из-за ошибки входа в систему.
Эта ошибка означает, что пароль учетной записи пользователя, указанный в настройках службы, неверен или истек. Перепроверьте учетные данные.
Ошибка 1067: Процесс был неожиданно завершен.
Эта ошибка может иметь несколько причин. Разберем их по порядку:
stunnel.conf сохранен в кодировке ANSI или UTF-8 без BOM. Наличие метки BOM в начале файла приводит к тому, что stunnel не может его прочитать.C:\stunnel. Если программа не может создать файл лога по указанному пути, она упадет.stunnel.log) вы видите сообщения типа Private key not found, значит, либо пароль не был сохранен, либо у пользователя службы нет прав на ветку реестра с ключами.Для быстрой диагностики рекомендуется на время настройки остановить службу и запустить stunnel.exe вручную как обычное приложение. В этом случае вы увидите консольное окно с подробным логом в реальном времени. Если в консоли соединение устанавливается успешно, а в режиме службы — нет, значит, проблема однозначно в правах доступа или неверно указанной учетной записи для работы в фоновом режиме.
Также обратим внимание на «обезличенные» сертификаты юридических лиц. Они лучше подходят для работы в режиме службы, так как не привязаны к конкретному физическому лицу, что упрощает их использование в автоматизированных системах обмена данными.