Ошибки, связанные с ИС участника, её сертификатом и контейнером ключей
1. В конфигурационном файле Агента в мнемонике ИС допущена ошибка:
Рисунок 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 - Результат выполнения тестового запроса Select 1.
Ошибка: "No required SSL certificate was sent".
Для начала необходимо проверить, что используется верный пароль.
Далее проверить наличие цепочки сертификатов закрытого ключа (проверить наличие цепочки в ОС Windows и в ОС Linux).
Если оба пункта выполнены, но ошибка сохраняется, то необходимо убедиться, что сертификат добавлен в ngate (сертификат удостоверяющего центра должен быть добавлен в ядро ПОДД).
Также данная ошибка может быть вызвана из-за того, что указан серверный ключ (ExtendedKeyUsage = serverAuth). Для аутентификации требуется клиентский ключ. Для того чтобы проверить это - необходимо выполнить команду keytool. (команда указана в статье Особенности регистрации сертификата в СМЭВ 4).
При проверке сертификата необходимо обратить внимание на параметр ExtendedKeyUsage он должен быть клиентским (ExtendedKeyUsage = clientAuth).
Рисунок 3 - Результат проверки сертификата.
4. Не стартует сервис, а в лог падает ошибка:
"Ошибка вызова функции getKeyParam: 0x8010002С”
или присутствует фраза:
“SignatureExeption: Срок действия закрытого ключа истек. Срок действия закрытого ключа не может превышать 1 год 3 месяца”
Проверить срок действия сертификата ИС (проверять необходимо в карточке ИС в ЛК УВ). Если он действующий, то нужно убедиться, что в контейнер добавлен нужный сертификат, и есть привязка к закрытому ключу.
Примечание: с помощью тестового запроса “SELECT 1”, можно проверить соединение Агента с Ядром ПОДД. Для того, чтобы отправить тестовый запрос - воспользуйтесь командой с использованием утилиты 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"
Необходимо убедиться, что в ядре ПОДД действительно зарегистрирован нужный сертификат, ключи которого подложены в Агента.
Ошибки, связанные с хранилищем ключей cp_ca_store
1. В конфигурационном файле Агента изменен путь к хранилищу сертификатов cp_ca_store:
Рисунок 4 - Результат выполнения тестового запроса Select 1.
Ошибка в неправильно указанном пути до хранилища ключей.
Убедиться, что путь до файла-хранилища сертификатов прописан корректно. Также удостовериться в том, что он действительно там есть. Скачать cp_ca_store можно из раздела Документы СМЭВ 4 (ПОДД) на портале ЕСКС, блок Для внедрения - Образцы файлов конфигурирования агента.
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 - Результат выполнения тестового запроса Select 1.
Ошибка в пароле от хранилища сертификатов. Необходимо его актуализировать.
Ошибки, связанные с подключением
1. Неверно указан адрес для подключения к ПОДД. В таком случае, в логе Агента будет прослеживаться следующая запись:
"Отсутствуют активные подключения: [PulsarClient(pulsar://10.86.28.170:6650)]"
Проверить адреса/порты для обращения к ПОДД, а также коннект по ним. Подключение к тестовой и продуктивной среде СМЭВ 4 (ПОДД) осуществляется по следующим адресам:
Тест
pulsar://podd.test.gosuslugi.ru:6650 podd.test.gosuslugi.ru - 109.207.9.87
Примечание: проверить коннект до адреса по порту можно командой telnet:
telnet 109.207.9.87 6650
Продуктивный контур
При доступе до одного ЦОД: pulsar://172.20.65.5:6650
При доступе до двух ЦОД:
Для NODE1 pulsar://109.207.15.27:6650 pulsar://109.207.15.59:6650
Для NODE2 pulsar://109.207.15.155:6650 pulsar://109.207.15.187:6650
Примечание: более подробно о адресах подключения к ПОДД можно найти в Регламенте подключения к СМЭВ 4, расположенном на портале ЕСКС в разделе Документы СМЭВ 4 (ПОДД).
2. В доменном имени при обращении к keycloak-oauth допущена ошибка. В логе Агента появляются следующие фразы:
"Непредвиденная ошибка отправки сведений об агенте в ядро", Не удалось отправить сообщение ни в один из ЦОД, Не удалось создать потребителя Pulsar serviceUrl=pulsar://podd.test.gosuslugi.ru:6650, PulsarClientException: Connection already closed.
А при выполнении тестового запроса всплывает следующая ошибка:
Рисунок 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 (п.1.2 «Настройка сетевого взаимодействия с тестовой и продуктивной средами ПОДД СМЭВ»), размещённом на портале ЕСКС в разделе Документы СМЭВ 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 - Результат выполнения запроса в Витрину данных.
Решение:
Исправить мнемонику витрины, обратить внимание, что указывается она в нижнем регистре.
Примечание: ошибки в случае неверного указания адреса kafka и мнемоники витрины для Потребителя выглядят так же.
Прочие ошибки, связанные с неверно заполненным конфигурационным файлом Агента application.yaml
1. Допущена ошибка в мнемонике ядра. В логе прослеживается следующая фраза:
"admin data due to Property does not exist"
А при попытке направить тестовый запрос всплывают следующие сообщения об ошибках:
Рисунок 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 - Ошибка вызова функции signHash: 0x65b“
при попытке направить тестовый запрос.
Или присутствует фраза:
"LicenseExeption: License has expired"
Используемая trial лицензия CryptoPro истекла. Необходимо приобрести лицензии на CryptoPro CSP и JCSP и внести информацию о них в систему, как описано руководстве пользователя по разворачиванию Агента.
После того, как учтутся все необходимые изменения, для корректной работы Агента СМЭВ4 необходимо произвести рестарт.
Прочие ошибки
1. В логе присутствуют сообщения "No such provider: JCP"
Убедитесь, что CryptoPro JCSP и CryptoPro CSP установлены корректно (согласно руководства администратора Агента ПОДД), а также путь к jar файлам СryptoPro JCSP присутствует в classpath при запуске java.
2. Ошибка, связанная с рассинхронизацией по времени (опережение по времени, относительно keycloak)
При попытке направить запрос возникает ошибка с расхождением по времени "Client authentication with signed JWT filed: JWT is not active: [ … ]".
Рисунок 10 - Ошибка с рассинхронизацией по времени относительно keycloak
при попытке направить запрос.
На Агенте необходимо синхронизировать время (как минимум выставить верное).
Примечание: без включения синхронизации время может снова разбежаться.