Часто встречающиеся проблемы и пути их устранения#

Ошибки при конфигурации kafka-ott-signature-interceptor#

Проблема

Решение/ возможные пути решения

Не удается подключиться, если в ott-service-tls.cer положить цепочку сертификатов УЦ

Распознается только первый сертификат в цепочке – необходимо оставить только нужный сертификат

Caused by: com.example.ott.base.api.OttClientException: [[java.security.KeyStoreException:Сертификат не найден по серийному номеру [number], OTT-ERR-005:Ошибка при формированиии хранилища доверенных сертификатов, путь к сертификату ОТТ: null, путь к сертификату УЦ: ssl/ott_service_for_3g.cer, формат хранения: PEM, [number]OTT-ERR-001:Невозможно выполнить запрос

Не задана настройка interceptor.signature.ott.service.crt
У OTT-клиента при использовании pem-сертификатов появляется две настройки:
ott.service.crt – сертификат OTT-сервера
ott.service.tls.crt – сертификат УЦ, подписавшего предыдущий сертификат

[hystrix-CallOttServerTrustedCerts-2] ERROR c.s.o.b.b.h.CallOttServerTrustedCerts - Fallback cause com.example.ott.base.api.OttClientException: [java.io.IOException:Server returned HTTP response code: 400 for URL: https://{ IP_ADDRESS }/ott-service/TokenJsonRpcFacade.json, com.googlecode.jsonrpc4j.HttpException:Caught error with no response body.] at com.example.ott.base.channel.JsonRpcChannel.getOttTrustedCrt(JsonRpcChannel.java:182)

Ошибка может появляться при использовании pem-сертификатов, на работу OTT не влияет

При подключении к ОТТ (через клиентскую библиотеку) появляется ошибка: OTT-AUTHZ-ERR-001:Не авторизовано для запроса
Конфигурационные параметры для подключения к ОТТ-серверу были следующие:
integration.kafka-ssm.producer.properties."[interceptor.signature.ott.authz.realm]"=mmt integration.kafka-ssm.producer.properties."[interceptor.signature.ott.module.id]"=pprb_pprb_mkia_mp integration.kafka-ssm.producer.properties."[interceptor.signature.ott.service.url]"=https://host:port/ott-service/rest/token integration.kafka-ssm.producer.properties."[interceptor.signature.ott.service.hosts]"=tkliw-pprb00011.vm.int.cloud.example:8443,tkliw-pprb00010.vm.int.cloud.example.ru:8443 integration.kafka-ssm.producer.properties."[interceptor.signature.ott.request.add.subject]"=urn:example:names:pprb:1.0:module:id#pprb_pprb_mkia_mp integration.kafka-ssm.producer.properties."[interceptor.signature.ott.request.add.resource]"=urn:example:names:pprb:1.0:api:interface:fullname#BHB177FS03.PROBLEMUPDATEDEVENT.V1 integration.kafka-ssm.producer.properties."[interceptor.signature.ott.request.add.environment.realm]"=ott:realm#mmt

Данные параметры – стендозависимые параметры авторизации, которые могут отличаться в зависимости от инсталляции. Один из вариантов решения использовать значение параметра: interceptor.signature.ott.request.add.action=urn:example:names:pprb:1.0:action:id#request
Примечание: параметр interceptor.signature.ott.authz.realm

Ошибки при использовании Java 17#

С мажорной версии EVTD 5.0.0 с поддержки снимается Java 11. Осуществляется поддержка версии JVM 17 и выше.

Проблема

Решение/ возможные пути решения

java.lang.IllegalAccessError: class ru.example.ss.signature.certificate.PublicKeyStore$ (in unnamed module @0x2db590e2) cannot access class sun.security.util DerValue (in module java.base) because module java.base does not export sun.security.util to unnamed module @0x2db590e2

При запуске добавить параметры jvm: --add-opens=java.base/sun.security.x509=ALL-UNNAMED --add-opens=java.base/sun.security.util=ALL-UNNAMED --add-opens=java.base/sun.security.ssl=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED

Другие возможные проблемы#

Проблема

Решение/ возможные пути решения

Ошибка при валидации XSD-схемы: Exception in thread "main" java.lang.IllegalAccessError: class ru.example.ss.validator.format.xml.schema.XsdValidator$ (in unnamed module @0x4ca1042e) cannot access class com.sun.org.apache.xerces.internal.dom.DOMInputImpl (in module java.xml) because module java.xml does not export com.sun.org.apache.xerces.internal.dom to unnamed module @0x4ca1042e

Ошибка может возникать на версии java выше 11 – необходимо установить и указать java 11:
Для Linux/ macOs: Каждый раз перед запуском Validator CLI указывать переменную окружения JAVA_HOME: export JAVA_HOME=JAVA_HOME=<путь до java>/Contents/Home
Явно добавить параметр JAVA_HOME в скрипт запуска bin/validator-cli перед комментарием # Determine the Java command to use to start the JVM.
Для Windows: Каждый раз перед запуском Validator CLI указывать переменную окружения JAVA_HOME: set JAVA_HOME=JAVA_HOME=<путь до java>
Явно добавить параметр JAVA_HOME в скрипт запуска bin/validator-cli.bat перед комментарием @rem Find java.exe

При запуске Kafka-клиентов в логах могут быть получены предупреждения: WARN The configuration 'interceptor.signature.ott.trust.store.path' was supplied but isn't a known config (в предупреждениях могут быть указаны любые параметры настроек, например: interceptor.signature.ott.trust.store.path)

Kafka-клиент логирует все неизвестные ему настройки (например, настройки перехватчиков) в WARN. Логирование не отключается и данное предупреждение на работу продукта не влияет, дополнительных действий не требуется.

Ошибка типа: java.lang.NoSuchMethodError: 'java.lang.Object org.cache2k.Cache.computeIfAbsent(java.lang.Object, java.util.concurrent.Callable)' (или другие NoSuchMethodError/NoClassDefFound, связанные с классами методов из пакета org.cache2k.*)

Возможная причина: конфликт версий библиотек org.cache2k:cache2k-*. Решение: использовать в проекте ту же версию cache2k, что и ОТТ-клиент: 1.2.1.Final.