Войти

Типовые ошибки Агента СМЭВ4

Дата актуализации: 23.10.2024.
Причина актуализации: выход версии агента СМЭВ4 3.14.1

Ошибки, связанные с ИС участника, её сертификатом и контейнером ключей

1.  В конфигурационном файле Агента в мнемонике ИС допущена ошибка:

 Типовые_ошибки_Агента_1.jpg

Рисунок 1 - Результат выполнения тестового запроса Select 1.

Ошибка: "Invalid Client Credentials".

В логе присутствует фраза "Invalid Client Credentials", которая означает наличие проблем с ИС участника и также свидетельствует о том, что есть проблемы с подключением. Необходимо убедиться, что ИС участника присвоена роль в СМЭВ 4 в ЛК УВ.

Примечание: стоит обратить внимание на то, что в файле application.yml мнемоника Агента СМЭВ 4 (ПОДД) должна соответствовать мнемонике ИС из ЛК УВ. Если она начинается с 0, то её необходимо обособить одинарными кавычками ' '. Также необходимо учитывать регистр (например: «agentMnemonic» и «agentmnemonic» - две различные мнемоники).

2.  В названии контейнера ключей в конфигурационном файле допущена ошибка. В логе просматривается следующая строчка:

      "Ошибка вызова функции acquireContext: 0x80090016"

или фраза:

      "Не удалось получить закрытый ключ {alias}"

Данные ошибки означают невозможность получения ключа по причине отсутствия доступа.

Решение:

Убедиться, что в конфигурационном файле application.yml в названии alias (контейнера ключей) не допущено ошибок. Далее следует убедиться, что в директории keys создана директория с именем пользователя /var/opt/cprocsp/keys/{{user}}. Если такой директории нет, то необходимо создать её и разместить в ней контейнер с ключами (контейнер с ключами выдаётся удостоверяющим центром вместе с сертификатом).

Примечание

Если в названии alias присутствуют пробелы, то в конфигурационном файле Агента его следует обособить одинарными кавычками ' '. Также стоит убедиться, что в блоке data-center конфигурационного файла прописана настройка signature: keystoreType: "JNI_CSP"

3.  В конфигурационном файле Агента в пароле от контейнера ключей допущена ошибка. В логе Агента прослеживаются следующие фразы:

     <p class="error-message">A client has not presented the required certificate</p> </div> </div> <p style="visibility: hidden; height: 0;">No required SSL certificate was sent</p> </body> </html> : 1edd83da-7d0a-65c7-8e0c-a1b3963bf0d3"

или следующий текст ошибки:

      "Ошибка вызова функции getUserKey: 0x80090022"

А при попытке направить тестовый запрос всплывает следующая ошибка: 

Типовые_ошибки_Агента_2.jpg

Рисунок 2 - Результат выполнения тестового запроса Select 1.

Ошибка: "No required SSL certificate was sent".

Для начала необходимо проверить, что используется верный пароль.

Далее проверить наличие цепочки сертификатов закрытого ключа (проверить наличие цепочки в ОС Windows и в ОС Linux).

Если оба пункта выполнены, но ошибка сохраняется, то необходимо убедиться, что сертификат добавлен в ngate (сертификат удостоверяющего центра должен быть добавлен в СМЭВ4).

Также данная ошибка может быть вызвана из-за того, что указан серверный ключ (ExtendedKeyUsage = serverAuth). Для аутентификации требуется клиентский ключ. Для того чтобы проверить это - необходимо выполнить команду keytool. (команда указана в статье Особенности регистрации сертификата в СМЭВ 4).

При проверке сертификата необходимо обратить внимание на параметр ExtendedKeyUsage он должен быть клиентским (ExtendedKeyUsage = clientAuth).

Типовые_ошибки_Агента_3.jpg

Рисунок 3 - Результат проверки сертификата.

4.  Не стартует сервис, а в лог падает ошибка:

     "Ошибка вызова функции getKeyParam: 0x8010002С

или присутствует фраза:

      “SignatureExeption: Срок действия закрытого ключа истек. Срок действия закрытого ключа не может превышать 1 год 3 месяца

Проверить срок действия сертификата ИС (проверять необходимо в карточке ИС в ЛК УВ). Если он действующий, то нужно убедиться, что в контейнер добавлен нужный сертификат, и есть привязка к закрытому ключу.

Примечание

C помощью тестового запроса “SELECT 1”, можно проверить соединение Агента со СМЭВ4. Для того, чтобы отправить тестовый запрос - воспользуйтесь командой с использованием утилиты curl:

 curl -X POST -H "Accept-Version:1" -H "Content-Type: application/json" -d '{"sql": {"sql": "select 1"}}' http://<имя_хоста>:8192/query --silent -m 30

5.  В логе присутствуют сообщения "Client authentication with signed JWT failed: Certificate provided in request not matched to any allowed public keys"

Необходимо убедиться, что в СМЭВ4 действительно зарегистрирован нужный сертификат, ключи которого подложены в Агента.

Ошибки, связанные с хранилищем ключей cp_ca_store

1. В конфигурационном файле Агента изменен путь к хранилищу сертификатов cp_ca_store:

Типовые_ошибки_Агента_4.jpg

Рисунок 4 - Результат выполнения тестового запроса Select 1.

Ошибка в неправильно указанном пути до хранилища ключей.

Убедиться, что путь до файла-хранилища сертификатов прописан корректно. Также удостовериться в том, что он действительно там есть. cp_ca_store больше не нужен начиная с версии 3.14.1!

2. В логе присутствуют сообщения вида:

    "unable to find valid certification path to requested target".

Убедитесь, что файл cp_ca_store содержит нужную цепочку сертификатов.

3. В конфигурационном файле Агента допущена ошибка в пароле от хранилища сертификатов cp_ca_store:

    "Ошибка при передаче SQL запроса в ядро : IOException: Key store was tampered with, or password was incorrect."

Типовые_ошибки_Агента_5.jpg

Рисунок 5 - Результат выполнения тестового запроса Select 1.

Ошибка в пароле от хранилища сертификатов. Необходимо его актуализировать.

Ошибки, связанные с подключением

1.  Неверно указан адрес для подключения к СМЭВ4. В таком случае, в логе Агента будет прослеживаться следующая запись:

     "Отсутствуют активные подключения: [PulsarClient(pulsar://10.86.28.170:6650)]"

Проверить адреса/порты для обращения к СМЭВ4, а также коннект по ним. Подключение к тестовой и продуктивной среде СМЭВ 4 осуществляется по следующим адресам:

Тест

      pulsar://podd.test.gosuslugi.ru:6650 podd.test.gosuslugi.ru - 109.207.9.87

Примечание

Проверить коннект до адреса по порту можно командой telnet:

      telnet 109.207.9.87 6650

Примечание

Более подробно о адресах подключения к СМЭВ4 можно найти в  статье Актуальные адреса для обращений к СМЭВ4.

2.  В доменном имени при обращении к keycloak-oauth допущена ошибка. В логе Агента появляются следующие фразы:

    "Непредвиденная ошибка отправки сведений об агенте в ядро", Не удалось отправить сообщение ни в один из ЦОД, Не удалось создать потребителя Pulsar                       serviceUrl=pulsar://podd.test.gosuslugi.ru:6650, PulsarClientException: Connection already closed.

А при выполнении тестового запроса всплывает следующая ошибка:

Типовые_ошибки_Агента_6.jpg

Рисунок 6 - Результат выполнения тестового запроса Select 1.

Ошибка в доменном имени адреса в "auth-server-url".

Проверить правильность написания доменного имени раздела keycloak-oauth конфигурационного файла Агента СМЭВ 4.

Для тестовой среды: https://podd.test.gosuslugi.ru/auth

Для продуктивной среды: https://podd.gosuslugi.ru:443/auth

3. При попытке направить тестовый запрос во всплывающем сообщении об ошибке присутствует фраза: "connection refused"

Пример:

{"@timestamp":"2022-12-13T09:46:53.849Z","level":"WARN","thread":"pulsar-client-io-1-1","logger":"org.apache.pulsar.client.impl.ConnectionPool","message":"Failed to open connection to podd.test.gosuslugi.ru/<unresolved>:6650 : org.apache.pulsar.shade.io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: Connection refused: podd.test.gosuslugi.ru/172.26.155.209:6650","context":"default"}

Проверить связанность с необходимыми адресами для подключения к тестовой и продуктивной среде командой telnet. Если соединение отсутствует, необходимо получить доступ. Подробнее с доступами можно ознакомиться в Регламенте подключения к СМЭВ4. Также необходимо проверить, чтобы адрес подключения к СМЭВ4 был прописан в /etc/hosts (актуально для Агента без docker).

Ошибки, связанные с подключением к Витрине данных

Ошибки в логе Агента-потребителя:

1.  Неверно указан адреса kafka в конфигурационном файле Агента-Поставщика

 {"@timestamp":"2023-04-11T08:58:53.922Z","level":"ERROR","thread":"NODE1-gw-consumer-3","logger":"ru.rtlabs.transport.messaging.consumer.ConsumerFlowVerticle","message":"Ошибка при обработке сообщения "Сообщение из Ядра NODE1"","context":"default","exception":"java.lang.RuntimeException: Ошибка при обработке сообщения из ядра типа "MetadataDistributionKey:0.1" at ru.rtlabs.transport.agent.gateway.CoreToAgentGatewayReceiver.handle(CoreToAgentGatewayReceiver.kt:30) at ru.rtlabs.transport.agent.gateway.CoreToAgentGatewayReceiver$handle$1.invokeSuspend(CoreToAgentGatewayReceiver.kt) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.UndispatchedCoroutine.afterResume(CoroutineContext.kt:233) …

Решение: Адрес в поле kafka-bootstrap-servers должен соответствовать адресу, на котором развернут Kafka.

2.  Неверно указана мнемоника витрины в конфигурационном файле Агента-Поставщика

 {"@timestamp":"2023-04-11T08:58:52.276Z","level":"ERROR","thread":"NODE1-gw-consumer-3","logger":"ru.rtlabs.transport.agent.gateway.BaseGatewayReceivingHandler","message":"Ошибка при обработке сообщения "Метаданные витрин" из ядра","context":"default","exception":"java.lang.RuntimeException: Ошибка при обработке сообщения из ядра типа "MetadataDistributionKey:0.1" at ru.rtlabs.transport.agent.gateway.CoreToAgentGatewayReceiver.handle(CoreToAgentGatewayReceiver.kt:30) at ru.rtlabs.transport.agent.gateway.CoreToAgentGatewayReceiver$handle$1.invokeSuspend(CoreToAgentGatewayReceiver.kt) …

А при попытке направить запрос в Витрину данных в тексте с ошибкой присутствует фраза:

    "Витрина не зарегистрирована"

Типовые_ошибки_Агента_7.jpg

Рисунок 7 - Результат выполнения запроса в Витрину данных.

Решение:

Исправить мнемонику витрины, обратить внимание, что указывается она в нижнем регистре.

Примечание: ошибки в случае неверного указания адреса kafka и мнемоники витрины для Потребителя выглядят так же.

Прочие ошибки, связанные с неверно заполненным конфигурационным файлом Агента application.yaml

1.  Допущена ошибка в мнемонике ядра. В логе прослеживается следующая фраза:

     "admin data due to Property does not exist"

А при попытке направить тестовый запрос всплывают следующие сообщения об ошибках:

Типовые_ошибки_Агента_8.jpg

Рисунок 8 - Результат выполнения тестового запроса Select 1.

Ошибка в написании мнемоники ядра.

Ошибка, связанная с правами на директорию

Может наблюдаться остановка контейнера через несколько секунд после запуска, с сообщением в логе:

     “Ошибка вызова функции acquireContext: 0x8009001a

В этом случае необходимо сделать пользователя {{user}} владельцем директории /var/opt/cprocsp/keys/{{user}}.

Если же Агент был развёрнут через doker-образ, то следует изменить владельца каталога keys и вложенных подкаталогов и файлов на пользователя с id=1000:

 chown -R 1000 keys

после чего повторить выполнение скрипта запуска контейнера.

Ошибка, связанная с конфликтом одновременно запущенных Агентов

При выполнении запроса всплывает сообщение с фразой: "Получен сигнал завершения работы агента":

 {"@timestamp":"2022-11-17T13:15:07.682Z","level":"INFO","thread":"NODE1-gw-consumer-2","logger":"ru.rtlabs.einfahrt.agent.info.InstanceInfo","message":"Получен сигнал завершения работы агента","context":"default","mdc":{"requestId":"7f5e9f7b-bf98-4219-89ea-f1a72ac5693c"},"tags":["PODD-einfahrt-0146"]}

Необходимо проверить, не запущен ли ещё один Агент, настроенный на ту же мнемонику ИС, на другой машине.

Ошибки, связанные с отсутствием лицензии КриптоПро

При попытке направить запрос он не проходит, и в логе агента появляются сообщения:

    “java.lang.IllegalStateException: Ошибка вызова функции signHash: 0x65b

Типовые_ошибки_Агента_9.jpg

Рисунок 9 - Ошибка вызова функции signHash: 0x65b“

при попытке направить тестовый запрос.

Или присутствует фраза:

    "LicenseExeption: License has expired"

Используемая trial лицензия CryptoPro истекла. Необходимо приобрести лицензии на CryptoPro CSP и JCSP и внести информацию о них в систему, как описано руководстве пользователя по разворачиванию Агента.

После того, как учтутся все необходимые изменения, для корректной работы Агента СМЭВ4 необходимо произвести рестарт.

Примечание

ПО JCSP больше не используется в версиях Агента 3.14.1 и выше, соответственно лицензионный ключ - не нужен 

Прочие ошибки

1.  В логе присутствуют сообщения "No such provider: JCP"

Убедитесь, что CryptoPro JCSP и CryptoPro CSP установлены корректно (согласно руководства администратора Агента СМЭВ4), а также путь к jar файлам СryptoPro JCSP присутствует в classpath при запуске java.

2.  Ошибка, связанная с рассинхронизацией по времени (опережение по времени, относительно keycloak)

При попытке направить запрос возникает ошибка с расхождением по времени:

     "Client authentication with signed JWT filed: JWT is not active: [ … ]"

или присутствует фраза:

     “Период действия JWT не наступил: [...]

Типовые_ошибки_Агента_10.jpg

Рисунок 10 - Ошибка с рассинхронизацией по времени относительно keycloak

при попытке направить запрос.

Решение:

На Агенте необходимо синхронизировать время (как минимум выставить верное).

Примечание

Без включения синхронизации время может снова разбежаться

3.  Ошибка, связанная с нехваткой памяти для старта Агента

Пример такой ошибки при старте контейнера:

OpenJDK 64-Bit Server VM warning: Option FlightRecorder was deprecated in version 13.0 and will likely be removed in a future release.

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000f6000000, 30232543232, 0) failed; error='Not enough space' (errno=12)

# There is insufficient memory for the Java Runtime Environment to continue.

# Native memory allocation (mmap) failed to map 30232543232 bytes for committing reserved memory.

# An error report file with more information is saved as:

# /egov/java/hs_err_pid1.log

Решение: необходимо в файле скрипта для запуска Агента вручную задать необходимый объём памяти (Рисунок 11).

--memory-swap=8g
--memory=8g

Типовые_ошибки_Агента_11.png

Рисунок 11 – Файл скрипта запуска Агента run_agent.sh

Можно задать любое кол-во выделяемой памяти, 8 считается оптимальным (с запасом).


Авторизуйтесь, чтобы оставить комментарий к статье