Milo OPC UA - невозможно подключиться к серверу с клиента при перезапуске сервера. сервер установлен на 'USER_TOKEN_POLICY_USERNAME'

У меня есть сервер milo opcua с включенным USER_TOKEN_POLICY_USERNAME и UsernameIdentityValidator для установки имени пользователя и пароля.

Со стороны клиента milo я использовал UsernameProvider для установки setIdentityProvider.

Когда я запускаю эту настройку, все работает нормально.

Но когда я перезапускаю сервер opcua, клиент milo не подключается повторно. Я получаю исключение ниже:

[milo-shared-thread-pool-2] Пропуск проверки сертификата: C = DE, ST =, L = Locality, OU = OrganizationUnit, O = Organization, CN = AggrServer @ 7aaf488fd8d6

НОВЫЕ ЖУРНАЛЫ

Кажется, есть проблема с проверкой сертификата клиент / сервер.

UA PKI, X509 и другие сложны и трудны для понимания, а еще труднее правильно настроить, не могу ответить на этот вопрос в нескольких словах. Если вы только начинаете использовать OPC UA, попробуйте пропустить серверные политики и идентификацию пользователя, пока не узнаете об этом.


person Amit Gawande    schedule 29.01.2021    source источник
comment
onSessionActive: не запускался   -  person Kevin Herron    schedule 01.02.2021
comment
Вам нужно будет предоставить дополнительные журналы или захват Wireshark или что-то в этом роде.   -  person Amit Gawande    schedule 02.02.2021
comment
@KevinHerron добавил еще несколько логов   -  person Amit Gawande    schedule 02.02.2021
comment
запускал тот же код без функции аутентификации. клиент повторно подключается к серверу даже после получения исключения выше netty. добавлены журналы для справки (см. выше)   -  person Kevin Herron    schedule 02.02.2021
comment
Можете ли вы сделать снимок Wireshark? Большинство этих журналов относятся к вашему приложению, а не к Milo, и они мне не очень помогают.   -  person Amit Gawande    schedule 02.02.2021


Ответы (2)


Серверу и клиенту потребуются сертификаты, чтобы расшифровать или зашифровать аутентификацию пользователя.

Но сделайте несколько проверок:

Обходные пути:

Проверьте, есть ли у клиента сертификат сервера на его доверенном пути.

  • Если возможно, отключите проверки безопасности клиента и / или сервера.
  • Используйте другой профиль безопасности, например http://opcfoundation.org/UA/SecurityPolicy#None, но тогда вы не можете использовать политики идентификации пользователей.

Проверьте, не изменился ли сертификат сервера. Сервер не должен восстанавливать свой самоподписанный сертификат при каждом запуске сервера, а только при установке или администрировании.

  • Я думаю, что значимое исключение для извлечения из ваших новых журналов таково:
  • Простая сетевая ошибка. Сервер отсутствует, не работает, мешает брандмауэр и т. Д.
person Frank Burkart    schedule 30.01.2021

Это не то, что вы сейчас делаете неправильно в клиентском коде.

io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: /192.168.56.101:4840

Это не исключение и не связано с причинами, из-за которых он не восстанавливается. Вам нужно будет предоставить дополнительную информацию или журналы.

просто добавил .setIdentityProvider (UsernameProvider (getSystemEnv (USERNAME), getSystemEnv (PASSWORD))) в клиентскую часть, и он перестал работать

person Kevin Herron    schedule 02.02.2021
comment
Позвольте мне рассказать вам еще несколько подробностей, я запускаю это в среде докеров. когда клиент milo подключается к серверу millo в среде докеров, кажется, что при повторном подключении он выбирает идентификатор контейнера в качестве URI конечной точки. мы заметили это при отладке. был бы уверен, что это создает проблему. При первом подключении он выбирает IP-адрес сервера (192.168.56.101:4840), при перезапуске он выбирает идентификатор контейнера. Это всего лишь мои наблюдения. Я хотел бы знать, может ли мой вывод быть причиной отсутствия связи - person Amit Gawande; 02.02.2021
comment
Может быть. Вы пытаетесь заставить его повторно подключиться, вместо того, чтобы позволить ему сделать это самостоятельно? Нет причин, по которым он будет выполнять обнаружение и выбирать новый URL-адрес конечной точки, если вы позволяете ему повторно подключаться самостоятельно. - person Kevin Herron; 02.02.2021
comment
29.01.2021 09: 25: 48.282 + 0000 INFO [m.o.serv.KafkaConsumer (1bc715b8)] [org.springframework.kafka.KafkaListenerEndpointContainer # 0-0-C-1] Запись успешно отправлена ​​в тему: NSCH_TEST_Data. 29.01.2021 09: 26: 55.681 + 0000 WARN [oemopcua.sdk.client.SessionFsm] [milo-shared-thread-pool-3] [2] Keep Alive failureCount = 4 превышает failuresAllowed = 3 29.01.2021 09:26 : 55.681 + 0000 WARN [oemopcua.sdk.client.SessionFsm] [milo-shared-thread-pool-3] [2] Keep Alive failureCount = 5 превышает failuresAllowed = 3 29.01.2021 09: 26: 55.682 + 0000 INFO [ moMiloConnectorRemote (7b76b59d)] [milo-shared-thread-pool-6] opc.tcp: //192.168.56.101: 4840: onSessionInactive: OpcUaSession {sessionId = NodeId {ns = 1, id = Session: fc6fdb4f-0e8a-445 -ba25-45d067d434e7}, sessionName = OpcUa @ 0b8bc292754c} 29.01.2021 09: 26: 55.682 + 0000 ИНФОРМАЦИЯ [moMiloConnectorRemote (7b76b59d)] [milo-shared-thread-pool-6] opc.tcp: //192.168.56.101 : 4840: sessionInactive: OpcUaSession {sessionId = NodeId {ns = 1, id = Session: fc6fdb4f-0e8a-441d-ba25-45d067d434e7}, sessionName = OpcUa @ 0b8bc292754c} 29.01.2021 09: 0000MoteoConnector_INFO: 266.68_Mo82. (7b76b59d)] [milo-shared-thread-pool-6] opc.tcp: //192.168.56.101: 4840: уведомить Observer-opc.tcp: // 19 2.168.56.101:4840 о ConnectionEvent (state = Connecting, prevState = Connected, label = opc.tcp: //192.168.56.101: 4840) 29.01.2021 09: 26: 55.683 + 0000 INFO [m.opcua.OpcUaObserverImpl (754d0f4a) ] [milo-shared-thread-pool-6] Observer-opc.tcp: //192.168.56.101: 4840: обработать событие ConnectionEvent (state = Connecting, prevState = Connected, label = opc.tcp: //192.168.56.101 : 4840) 29.01.2021 09: 26: 55.683 + 0000 ИНФОРМАЦИЯ [moOpcUaObserverImpl $ ModelReadyChangeChecker (3dd6dea0)] [milo-shared-thread-pool-6] OpcUaObserverImpl-opc.tcp: //192.168.56.101: 4840: stop 29.01 .2021 09: 26: 55.683 + 0000 INFO [m.opcua.OpcUaObserverImpl (754d0f4a)] [milo-shared-thread-pool-6] Observer-opc.tcp: //192.168.56.101: 4840: уведомить 2 слушателей о событии ModelUnavailableEvent @ 1791022155 [uri = opc.tcp: //192.168.56.101: 4840, nodesCount = 0, label = Observer-opc.tcp: //192.168.56.101: 4840] 29.01.2021 09: 26: 55.683 + 0000 INFO [m .opcua.OpcUaObserverImpl (754d0f4a)] [DefaultDispatcher-worker-1] Observer-opc.tcp: //192.168.56.101: 4840: уведомить подписчика-opc.tcp : //192.168.56.101: 4840 о ModelUnavailableEvent @ 1791022155 [uri = opc.tcp: //192.168.56.101: 4840, nodesCount = 0, label = Observer-opc.tcp: //192.168.56.101: 4840] 29.01.2021 09: 26: 55.683 + 0000 ИНФОРМАЦИЯ [opcua.MiloSubscriber (364cd1b9)] [DefaultDispatcher-worker-1] Subscriber-opc.tcp: //192.168.56. 101: 4840: отказаться от подписки 1 подписка 29.01.2021 09: 26: 55.683 + 0000 INFO [m.opcua.OpcUaObserverImpl (754d0f4a)] [DefaultDispatcher-worker-2] Observer-opc.tcp: //192.168.56.101: 4840: notify SyncProcessor-opc.tcp: //192.168.56.101: 4840 о ModelUnavailableEvent @ 1791022155 [uri = opc.tcp: //192.168.56.101: 4840, nodesCount = 0, label = Observer-opc.tcp: //192.168.56.101: 4840] 29.01.2021 09: 26: 55.683 + 0000 INFO [m.opcua.serv.SyncProcessor (2474528)] [DefaultDispatcher-worker-2] SyncProcessor: игнорировать событие ModelUnavailableEvent @ 1791022155 [uri = opc.tcp: //192.168 .56.101: 4840, nodesCount = 0, label = Observer-opc.tcp: //192.168.56.101: 4840] 29.01.2021 09: 26: 55.686 + 0000 INFO [opcua.MiloSubscriber (364cd1b9)] [DefaultDispatcher-worker-1 ] SyncExecutor-Subscriber (364cd1b9) -opc.tcp: //192.168.56.101: 4840: SyncExecutor-Subscriber (364cd1b9) -opc.tcp: //192.168.56.101: 4840: отменить подписку, subscriptionId = 1 29.01.2021 09:26 : 55.686 + 0000 ИНФОРМАЦИЯ [opcua.MiloSubscriber (364cd1b9)] [DefaultDispatcher-worker-1] Subscriber-opc.tcp: // 19 2.168.56.101:4840: удалить подписку SyncExecutor-Subscriber (364cd1b9) -opc.tcp: //192.168.56.101: 4840 (SyncExecutor-Subscriber (364cd1b9) -opc.tcp: //192.168.56.101: 4840) 29.01.2021 09 : 27: 11.685 + 0000 WARN [opcua.MiloSubscriber (364cd1b9)] [DefaultDispatcher-worker-1] [Subscriber-opc.tcp: //192.168.56.101: 4840: deleteSubscription (1) для SyncExecutor-Subscriber (364cd1b9) -op .tcp: //192.168.56.101: 4840] возвращает null из-за UaException: status = Bad_ConnectionRejected, message = io.netty.channel.AbstractChannel $ AnnotatedConnectException: в соединении отказано: /192.168.56.101:4840 29.01.2021 09:27: 27.703 + 0000 WARN [oemoscsClientCertificateValidator $ InsecureValidator] [milo-shared-thread-pool-5] Пропуск проверки сертификата: C = DE, ST =, L = Locality, OU = OrganizationUnit, O = Organization, CN = AggrServer @ 7aaf488fd8d6 29.01.2021 09: 27: 31.782 + 0000 WARN [oemoscsClientCertificateValidator $ InsecureValidator] [milo-shared-thread-pool-2] Пропуск проверки сертификата: C = DE, ST =, L = L ocality, OU = OrganizationUnit, O = Organization, CN = AggrServer @ 7aaf488fd8d6 29.01.2021 09: 27: 39.806 + 0000 WARN [oemoscsClientCertificateValidator $ InsecureValidator] [milo-shared-thread-pool-6] Пропуск проверки сертификата: C = DE, ST =, L = Locality, OU = OrganizationUnit, O = Organization, CN = AggrServer @ 7aaf488fd8d6 29.01.2021 09: 27: 55.830 + 0000 WARN [oemoscsClientCertificateValidator $ InsecureValidator] [milo-shared-thread-pool-3] Пропуск проверки сертификата: C = DE, ST =, L = Locality, OU = OrganizationUnit, O = Organization, CN = AggrServer @ 7aaf488fd8d6 - person Amit Gawande; 03.02.2021
comment
02.02.2021 18: 32: 55.541 + 0000 WARN [opcua.MiloSubscriber (3c5d9688)] [DefaultDispatcher-worker-3] [Subscriber-opc.tcp: //192.168.56.101: 4840: deleteSubscription (1) для SyncExecutor-Subscriber ( 3c5d9688) -opc.tcp: //192.168.56.101: 4840] вернуть null из-за UaException: status = Bad_ConnectionRejected, message = io.netty.channel.AbstractChannel $ AnnotatedConnectException: в соединении отказано: /192.168.56.101:4840 02.02.2021 18: 32: 55.542 + 0000 ИНФОРМАЦИЯ [opcua.MiloBrowser (1d141b2d)] [DefaultDispatcher-worker-2] idNameTypeSet.nodes.size 02.02.2021 18: 32: 55.542 + 0000 ИНФОРМАЦИЯ [moOpcUaObserverImpl $ ModelReadyChangechangeChef12 (DefaultDispatcher-worker-2) -worker-2] OpcUaObserverImpl-opc.tcp: //192.168.56.101: 4840: выйти из проверки модели, поскольку остановлен извне 02.02.2021 18: 33: 59.790 + 0000 ИНФОРМАЦИЯ [moMiloConnectorRemote (74c9951c)] [milo-shared-thread -pool-3] opc.tcp: //192.168.56.101: 4840: onSessionActive: OpcUaSession {sessionId = NodeId {ns = 1, id = Session: d27e7db7-4401-4f08-8c17-7bfaf9075fe4}, sessionName = OpcUa @ 154c 9f72aa09} 02.02.2021 18: 33: 59.790 + 0000 INFO [moMiloConnectorRemote (74c9951c)] [milo-shared-thread-pool-3] opc.tcp: //192.168.56.101: 4840: notify Observer-opc.tcp: //192.168.56.101:4840 о ConnectionEvent (state = Connected, prevState = Connecting, label = opc.tcp: //192.168.56.101: 4840) 02.02.2021 18: 33: 59.790 + 0000 INFO [m.opcua.OpcUaObserverImpl ( ff09afd)] [milo-shared-thread-pool-3] Observer-opc.tcp: //192.168.56.101: 4840: обработать событие ConnectionEvent (state = Connected, prevState = Connecting, label = opc.tcp: //192.168 .56.101: 4840) 02.02.2021 18: 33: 59.790 + 0000 ИНФОРМАЦИЯ [moOpcUaObserverImpl $ ModelReadyChangeChecker (3c8bf12c)] [milo-shared-thread-pool-3] OpcUaObserverImpl-opc.tcp: //192.168.56.101: 48 начало 02.02.2021 18: 33: 59.790 + 0000 ИНФОРМАЦИЯ [moOpcUaObserverImpl $ ModelReadyChangeChecker (3c8bf12c)] [milo-shared-thread-pool-3] OpcUaObserverImpl-opc.tcp: //192.168.56.101: 4840: modelReadyChecking min = 10, max = 30, timeUnit = SECONDS, current = 10, step = 3), modelChangeChecking = MinMaxInterv al (min = 60, max = 1800, timeUnit = SECONDS, current = 60, step = 180), modelReadyMinNodesCount = 0 02.02.2021 18: 33: 59.804 + 0000 ИНФОРМАЦИЯ [moOpcUaObserverImpl $ ModelReadyChangeChecker (3c8bf12c)] [DefaultDispatcher -2] OpcUaObserverImpl-opc.tcp: //192.168.56.101: 4840: - ›check (modelReadyMinNodesCount = 0, modelChangeCheckingRunning = false) 02.02.2021 18: 33: 59.804 + 0000 INFO [opcua.MiloBrowser (1d141bDispatcher) по умолчанию] [Default] -worker-2] В методе nodesCount 02.02.2021 18: 33: 59.817 + 0000 INFO [opcua. MiloBrowser (1d141b2d)] [DefaultDispatcher-worker-2] nodesCount = 3605 - person Kevin Herron; 03.02.2021