Проверка состояния
| Эндпоинт | Ответ |
|---|---|
/health/live | 200 — служба работает, 503 — не отвечает |
/health/ready | 200 — готов (тестовая подпись выполнена), 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 дней, контроль охлаждения — раз в месяц.
- Контроль срока сертификата и ключей.
- Ротация журналов.