Почему служба UTM transport запускается на несколько секунд и сразу останавливается?

Системный администратор Управленческий учет Торговля и дистрибуция
← На главную

Многие пользователи системы ЕГАИС сталкиваются с распространенной и довольно сложной проблемой: служба Transport Универсального Транспортного Модуля (УТМ) запускается на короткое время, а затем немедленно останавливается. Это приводит к невозможности обмена данными с ЕГАИС и нарушению бизнес-процессов (особенно если возникают риски при покупке оборудования на маркетплейсах) — для решения этой проблемы подойдёт модуль автоматического обмена с ЕГАИС и восстановления данных УТМ. Давайте рассмотрим, почему это происходит, какие диагностические шаги мы можем предпринять и какие существуют методы исправления этой ошибки.

Служба Transport является ключевым компонентом УТМ, обеспечивающим взаимодействие с серверами ЕГАИС (подобно тому, как в маркировке требуется извлечение DataMatrix кодов из документов) — для контроля её состояния есть инструмент автоматизации ЕГАИС и мониторинга работоспособности УТМ. Её некорректная работа может быть вызвана множеством факторов, начиная от проблем с криптографическими ключами и сертификатами, заканчивая конфликтами портов и системными ошибками.

Начинаем диагностику: Первые шаги и анализ логов

Когда служба Transport УТМ постоянно останавливается, наш первый шаг — это тщательная диагностика. Мы сосредоточимся на системных журналах Windows и лог-файлах самого УТМ, так как они содержат наиболее важную информацию о причинах сбоя.

  1. Проверяем системный журнал Windows: Запуск и остановка служб всегда фиксируются в системном журнале (для удаленного контроля может пригодиться утилита мониторинга для Mikrotik). Мы открываем «Просмотр событий» Windows (обычно находится в «Панели управления» -> «Администрирование» -> «Просмотр событий») и переходим в раздел «Журналы Windows» -> «Система». Здесь мы ищем записи, связанные со службой «Transport». Очень часто мы можем обнаружить событие с кодом 7024 и описанием "Неверная функция". Эта ошибка указывает на внутренний сбой службы, но не дает прямой подсказки о его причине. Тем не менее, это подтверждает, что проблема находится именно в самой службе.
  2. Анализируем лог-файлы УТМ: Наиболее ценная информация для диагностики содержится в лог-файлах УТМ. Мы переходим в директорию установки УТМ, обычно это
    
    C:\UTM\transporter\l\
    
    . Здесь нас интересуют следующие файлы:
    • transport_info.log: Основной лог работы службы Transport.
    • daemon-error.log: Содержит информацию об ошибках запуска демона службы.
    • update.log: Лог службы обновления, которая также может влиять на работу Transport.

    Мы открываем эти файлы (начиная с daemon-error.log или transport_info.log) и просматриваем их с конца, чтобы найти самые свежие записи. Нас интересуют строки, содержащие слова "ERROR" или "Caused by". В одном из случаев мы можем обнаружить следующую критически важную ошибку:

    
    Caused by: java.lang.IllegalStateException: java.lang.IllegalStateException: ГОСТ хранилище не содержит подходящего сертификата
    

    Эта ошибка прямо указывает на проблему с криптографическим сертификатом ГОСТ, который УТМ не может найти или использовать.

Решения, связанные с сертификатами и Rutoken

Если диагностика указывает на проблемы с сертификатами, особенно ошибку "ГОСТ хранилище не содержит подходящего сертификата", мы сосредоточимся на следующих шагах:

  1. Очистка от лишних ключей и сертификатов: Одна из самых частых причин, почему УТМ не может определиться с нужным сертификатом, — это наличие множества старых, неактуальных или поврежденных ключевых пар на носителе Rutoken. Мы настоятельно рекомендуем удалить все неиспользуемые сертификаты, оставив на носителе только действующие. Это можно сделать через «Панель управления Rutoken» или с помощью специальных утилит. Многим пользователям именно этот шаг помогает решить проблему.
  2. Проверка и исправление некорректного CKA_ID: Ошибка "ГОСТ хранилище не содержит подходящего сертификата" часто связана с тем, что в атрибуте CKA_ID ГОСТ-сертификата присутствуют непечатные или некорректные символы. Для исправления этой проблемы существуют специализированные утилиты:
    • Используем egais_fix_id.zip (или egais_fix_id.exe): Мы можем попробовать использовать эту утилиту для автоматического удаления некорректных символов. Однако следует отметить, что не всегда эта утилита полностью решает проблему, как было отмечено в одном из сообщений форума.
    • Применяем Pkcs11Admin-x64.exe: Если egais_fix_id.exe не помог, возможно, нам потребуется более мощный инструмент, такой как Pkcs11Admin-x64.exe. Эта утилита позволяет более глубоко проверить и при необходимости удалить нерелевантные записи ключей, которые не относятся к нашим действующим сертификатам и могут мешать УТМ корректно идентифицировать нужный.
  3. Явное указание серийного номера сертификата в transport.properties: Начиная с версии УТМ 4.2.0 (сборка 2539), появилась возможность работы с несколькими сертификатами КЭП на одном носителе. Если УТМ выбирает не тот ГОСТ-сертификат, который нам нужен, мы можем явно указать его серийный номер в файле конфигурации.
    1. Открываем файл C:\UTM\transporter\conf\transport.properties.
    2. Находим или добавляем параметр crypto.lib.gost.serialNumber.
    3. Указываем полный серийный номер ГОСТ-сертификата, который должен использовать УТМ.

    Пример записи:

    
    crypto.lib.gost.serialNumber=0123456789ABCDEF
    

    Если этот параметр не указан, УТМ по умолчанию выбирает последний записанный на носитель ГОСТ-сертификат, что не всегда корректно.

  4. Актуальные драйверы Rutoken: Устаревшая или несовместимая версия драйверов Rutoken — частая причина проблем с распознаванием сертификатов. Мы обязательно загружаем и устанавливаем самые актуальные драйверы Rutoken для ЕГАИС с официального сайта. Обращаем внимание, что некоторые новые версии «Панели управления Rutoken» могут не устанавливаться на старых операционных системах, таких как Windows 7, что может приводить к ошибкам. В таких случаях нам может потребоваться экспериментировать с разными версиями драйверов, чтобы найти совместимую комбинацию.
  5. Проверка цепочки сертификатов ПКИ ФСРАР: Мы используем программу КриптоПро CSP для проверки цепочки сертификатов. Мы открываем «Управление сертификатами» в КриптоПро и находим наш сертификат. Если видим рядом с ним «крест» (значок ошибки), это может указывать на то, что корневые или промежуточные сертификаты УЦ не установлены или не доверены. Мы добавляем недостающие сертификаты в доверенные хранилища.

Проблемы с операционной системой и программным обеспечением

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

  1. Конфликты портов: Служба Transport УТМ по умолчанию использует порт 8080 для обмена данными. Если этот порт уже занят другим приложением на компьютере, служба УТМ не сможет запуститься.
    • Проверяем занятость порта: Мы открываем командную строку от имени администратора и выполняем команду:
      
      netstat -a
      

      Мы внимательно изучаем вывод команды на предмет использования порта 8080. Если порт занят, мы увидим строку с :8080 и статусом LISTENING, а также PID (идентификатор процесса) приложения, которое его занимает. В одном из сообщений пользователи форума проверяли порт 8080 и обнаружили, что он не занят, что исключает эту причину, но в вашем случае это может быть актуально.

    • Изменяем порт УТМ: Если порт занят, мы имеем два варианта: либо остановить конфликтующее приложение, либо изменить порт УТМ. Для изменения порта УТМ мы открываем файл C:\UTM\transporter\conf\transport.properties и находим параметр server.port (или port, в зависимости от версии УТМ). Мы изменяем его значение на другой свободный порт, например, 8081.

      Пример:

      
      server.port=8081
      

      После изменения порта мы перезапускаем службу УТМ.

  2. Антивирусное ПО и брандмауэр: Антивирусные программы или встроенный брандмауэр Windows могут ошибочно блокировать работу компонентов УТМ.
    • Временно отключаем: Мы временно отключаем антивирус и брандмауэр Windows. Затем пытаемся запустить службу Transport. Если служба успешно запускается, то проблема была в защитном ПО.
    • Настраиваем исключения: Если дело в антивирусе/брандмауэре, мы добавляем папку УТМ (C:\UTM) и его исполняемые файлы (например, transport.exe, updater.exe) в список исключений нашего защитного ПО. Также нам может понадобиться разрешить входящие и исходящие соединения для порта 8080 (или того, на который мы его изменили).
  3. Обновления Windows: Иногда обновления операционной системы могут вызывать непредвиденные проблемы совместимости с УТМ, затрагивая работу служб или аутентификацию. Если проблема возникла сразу после недавнего обновления Windows, мы можем попробовать удалить его или выполнить откат системы к предыдущему состоянию.

Рекомендации по переустановке и окончательная проверка

Если после всех диагностических шагов и попыток исправления проблема остается, или если мы видим, что проблема явно не в сертификатах (например, лог не указывает на ошибку ГОСТ хранилища), нам следует рассмотреть переустановку УТМ. Многие пользователи сообщают, что именно переустановка УТМ (иногда в сочетании с очисткой ключей) в итоге решает проблему.

  1. Резервное копирование базы данных УТМ: Прежде чем приступать к переустановке или любым серьезным изменениям, критически важно создать резервную копию базы данных УТМ. База данных УТМ хранится в папке transportDB, которая по умолчанию находится в C:\UTM\transporter\. Мы просто копируем эту папку в безопасное место. Это позволит нам восстановить все данные (например, незавершенные запросы, квитанции) в случае непредвиденных проблем.
  2. Последовательность действий при переустановке УТМ:
    1. Останавливаем службы УТМ: Через «Диспетчер задач» или «Службы» мы останавливаем все службы, связанные с УТМ (Transport, Updater).
    2. Удаляем УТМ: Мы используем стандартный инструмент Windows «Установка и удаление программ» для полного удаления УТМ.
    3. Устанавливаем актуальную версию УТМ: Загружаем актуальный автономный дистрибутив УТМ из личного кабинета ЕГАИС и выполняем чистую установку.
    4. Возвращаем базу данных: После установки нового УТМ, но до его первого запуска, мы заменяем только что созданную папку transportDB в C:\UTM\transporter\ на нашу резервную копию.
    5. Запускаем службы УТМ: Запускаем службы УТМ и проверяем их работу.
  3. Проверка работоспособности домашней страницы УТМ: После всех манипуляций и запуска службы Transport мы обязательно проверяем доступность домашней страницы УТМ. Мы открываем веб-браузер и переходим по адресу http://localhost:8080/ (или другому порту, если мы его меняли). На этой странице мы можем увидеть статус УТМ и убедиться, что он работает без ошибок, таких как "Ошибка ключа доступа в УТМ".

В одном из сообщений на форуме, где автор столкнулся с проблемой "ГОСТ хранилище не содержит подходящего сертификата", именно переустановка УТМ и очистка от лишних ключей (как это было предложено в сообщении 2) оказалась решающей. Это подчеркивает, что иногда комплексный подход, включающий как очистку, так и переустановку, является наиболее эффективным.

Заключение

Проблема с остановкой службы UTM transport может быть вызвана разнообразными факторами. Мы начали с анализа системных журналов и лог-файлов УТМ, которые часто указывают на конкретную причину, такую как некорректный сертификат. Затем мы рассмотрели методы устранения проблем с Rutoken и сертификатами, включая очистку ключей, использование утилит для исправления CKA_ID и обновление драйверов. Не забыли мы и о системных причинах, таких как конфликты портов и влияние антивирусного ПО. Если все эти шаги не принесли результата, полноценная переустановка УТМ с предварительным резервным копированием базы данных часто оказывается последним и самым действенным решением. Важно действовать методично, проверяя каждый шаг и анализируя изменения в работе системы.

← На главную