Эксплуатация и диагностика

ESIA-Adapter : 6. Эксплуатация и диагностика


Проверка состояния

ЭндпоинтОтвет
/health/live200 — служба работает, 503 — не отвечает
/health/ready200 — готов (тестовая подпись выполнена), 503 — ошибка КриптоПро или конфигурации

Для проверки подписи в /health/ready в файл конфигурации провайдера добавляется:

"checkReady": "{{ cryptoSign .context \"test\" .extidp_details.cryptoProvider | base64 }}"

Параллельно адаптер раз в 15 минут проверяет КриптоПро (CORRUPTION_CHECK_*); сбой фиксируется событием corruption detected.

Проверка работоспособности КриптоПро

Команды выполняются от пользователя, под которым работает служба. Значения в <...> — параметры контейнера и сертификата.

Подписать файл вручную (API ЕСИА v1):

/opt/cprocsp/bin/amd64/cryptcp -signf -der -strict -cert -detached -thumbprint <ОТПЕЧАТОК> -pin <PIN> /tmp/filetosign

Подписать файл вручную (API ЕСИА v2):

/opt/cprocsp/bin/amd64/csptest -keyset -container <ИМЯ_КОНТЕЙНЕРА> -password <PIN> -keytype exchange -sign GOST12_256 -in /tmp/filetosign -out /tmp/filetosign.sgn

Проверить подпись ЕСИА:

/opt/cprocsp/bin/amd64/csptest -keyset -verify GOST12_256 -in /tmp/data.dat -signature /tmp/data.sig -keytype signature -certificate /path/to/cert.cer

Сформировать контейнер и сертификат:

/opt/cprocsp/bin/amd64/cryptcp -createcert -provtype 80 -hashalg 1.2.643.7.1.1.2.2 -rdn 'CN=<ИМЯ>' -exprt -cont '\\.\HDIMAGE\<ИМЯ_КОНТЕЙНЕРА>'

Список сертификатов и экспорт сертификата:

/opt/cprocsp/bin/amd64/certmgr -list
/opt/cprocsp/bin/amd64/certmgr -export -dest <файл>.cer -thumbprint <ОТПЕЧАТОК>

Журналы

Адаптер пишет в stdout в JSON; уровень задаёт LOG_LEVEL. При запуске службой журнал доступен через systemd:

sudo journalctl -u esia-idp

Ротацию и анализ файлов журнала организует администратор безопасности. Уровень debug включает подробные сообщения о подписи и конвейере — в продуктиве держать info.

Диагностика по симптомам

СимптомГде смотретьВероятная причина
/health/ready = 503события signer: failed to sign, signer: unknown crypto provider, corruption detectedКриптоПро не установлен или недоступен, неверный контейнер/PIN, неверный cryptoProvider
Служба не стартуетfailed to load configuration, failed to read key file, failed to parse rsa key, failed to listen httpошибка в переменных/JSON, нет ключа JWT, порт занят
Не отдаёт данные из БДfailed to connect database, failed to migrate databaseневерный DB_URL, нет доступа
Вход прерывается в ЕСИАextidp: callback is failed, extidp: invalid requestустаревший запрос (EXTIDP_REQUEST_TTL), неверный redirect_uri, клиент не в clients.json
Вход прерывается после ЕСИАextidp: http request is failed, extidp: script execution took too long, business process errorошибка запроса данных пользователя (нет прав, 4xx от ЕСИА), JS-шаг дольше 10 с
Пользователь не вошёл, «not trusted»шаг проверки is_trustedнеподтверждённая учётная запись ЕСИА
Данные пользователя пустые или устарелиopenid: user info is expired or not foundистёк USERINFO_TTL, неверный маппинг attrMapping
Подпись ЕСИА не проходитsigner: failed to verify, crypto: verify raw signatureневерный сертификат в ЕСИА или в хранилище, истёк срок
Выход не работаетlogout: ...нет sid, сессия истекла

Полный перечень сообщений (около 100) — в Руководстве администратора, табл. 7. Любая ошибка HTTP-шага userInfoPipeline прерывает вход пользователя.

Данные для обращения в поддержку

Версию ПО, фрагмент журнала с LOG_LEVEL=debug за время сбоя, /health/ready, версию КриптоПро, обезличенные конфигурации провайдера и переменные окружения.

Регулярные операции

  • Контроль целостности ПО и КриптоПро после каждой перезагрузки и раз в 7 дней (cpverify, см. Безопасность).
  • Перезагрузка сервера не реже раза в 7 дней, контроль охлаждения — раз в месяц.
  • Контроль срока сертификата и ключей.
  • Ротация журналов.

Обсуждение