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

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 [o.e.m.opcua.sdk.client.SessionFsm] [milo-shared-thread-pool-3] [2] Keep Alive failureCount=4 超过 failuresAllowed=3 29.01.2021 09:26:55.681+0000 WARN [o.e.m.opcua.sdk.client.SessionFsm] [milo-shared-thread-pool-3] [2] Keep Alive failureCount=5 超过 failuresAllowed=3 29.01.2021 09:26:55.682+0000 信息 [moMiloConnectorRemote(7b76b59d)] [milo-shared-thread-pool-6] opc.tcp://192.168.56.101:4840: onNodeInactive{OpcUSessionIdSession= =1,id=Session:fc6fdb4f-0e8a-441d-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{nssessionIdaNode=OpcU =1,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:通知观察者://opc。 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 INFO [m.opcua.OpcuaObserverImpl(754d0f4a)] [milo-shared-thread-pool-6] Observer-opc.tcp://192.168.56.101:48 处理事件连接(state=Connecting,label=opc.tcp://192.168.56.101:4840) 29.01.2021 09:26:55.683+0000 信息 [m.o.OpcuaObserverImpl$ModelReadyChangeChecker(3dd6dea0)] [milo-shared-thread-pool-6] OpcuaObserverImpl-opc.tcp://192.84108.stop:192.84108 29.01.2021 09:26:55.683+0000 INFO [m.opcua.OpcuaObserverImpl(754d0f4a)] [milo-shared-thread-pool-6] Observer-opc.tcp://192.168.56.100: 4284 通知监听器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:notify.tcprc/Subscribe /192.168.56.101:4840 关于 ModelUnavailableEvent@1791022155[uri=opc.tcp://192.168.56.101:4840,label=Observer-opc.tcp://192.168.56.101] 29.01.2021 09:26:55.683+0000 INFO [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:notify.tcpProcess0: /192.168.56.101:4840 关于 ModelUnavailableEvent@1791022155[uri=opc.tcp://192.168.56.101:4840,label=Observer-opc.tcp://192.168.56.101] 29.01.2021 09:26:55.683+0000 INFO [m.opcua.serv.SyncProcessor(2474528)] [Defaultdispatcher-worker-2] SyncProcessor:忽略事件 ModelUnavailableEvent@1791022155[uri=opc.tcp://191925.tcp:// :4840,label=Observer-opc.tcp://192.168.56.101:4840] 29.01.2021 09:26:55.686+0000 信息 [opcua.MiloSubscriber(364cd1b9)] [Defaultdispatcher-worker-1] SyncExecutor-Subscriber(364cd1b9)-opc.tcp://192.168:5483r40Executor:5483400 )-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://192.168.56.101:4840: 删除订阅 (Syncr3Execut) .tcp://192.168.56.101:4840(SyncExecutor-Subscriber(364cd1b9)-opc.tcp://192.168.56.101:4840) 29.01.2021 09:27:11.685+0000 警告 [opcua.MiloSubscriber(364cd1b9)] [Defaultdispatcher-worker-1] [Subscriber-opc.tcp://192.168.56.101:4840: deleteSync(1utor)-Subscriber 364cd1b9)-opc.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="",O=组织,CN=AggrServer@7aaf488fd8d6 29.01.2021 09:27:31.782+0000 WARN [oemoscsClientCertificateValidator$InsecureValidator] [milo-shared-thread-pool-2] 跳过证书验证:C=DE,O=组织,CN=AggrServer@7aaf488fd8d6 29.01.2021 09:27:39.806+0000 WARN [oemoscsClientCertificateValidator$InsecureValidator] [milo-shared-thread-pool-6] 跳过证书验证:C=DE,O=组织,CN=AggrServer@7aaf488fd8d6 29.01.2021 09:27:55.830+0000 WARN [oemoscsClientCertificateValidator$InsecureValidator] [milo-shared-thread-pool-3] 跳过证书验证:C=DE,O=组织,CN=AggrServer@7aaf488fd8d6

新日志

02.02.2021 18:32:55.541+0000 WARN [opcua.MiloSubscriber(3c5d9688)] [Defaultdispatcher-worker-3] [Subscriber-opc.tcp://192.168.56.101:4840 of deleteSubscription(3c5d9688)] -Subscriber(3c5d9688)-opc.tcp://192.168.56.101:4840] 返回 null,因为 UaException:status=Bad_ConnectionRejected,message=io.netty.channel.AbstractChannel$AnnotatedConnectException:连接被拒绝:/192.168.56.101 02.02.2021 18:32:55.542+0000 信息 [opcua.Milobrowser(1d141b2d)] [Defaultdispatcher-worker-2] idNameTypeSet.nodes.size 2021年2月2日18:32:55.542 + 0000 INFO [m.o.OpcuaObserverImpl $ ModelReadyChangeChecker(3c8bf12c)] [Defaultdispatcher工-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{sessionIdaNodeSession=OpcU =1,id=Session:d27e7db7-4401-4f08-8c17-7bfaf9075fe4},sessionName=Opcua@154c9f72aa09} 02.02.2021 18:33:59.790+0000 信息 [moMiloConnectorRemote(74c9951c)] [milo-shared-thread-pool-3] opc.tcp://192.168.56.101:4840:通知观察者://opc。 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,label=opc.tcp://192.168.56.101:4840) 02.02.2021 18:33:59.790+0000 信息 [m.o.OpcuaObserverImpl$ModelReadyChangeChecker(3c8bf12c)] [milo-shared-thread-pool-3] OpcuaObserverImpl-opc.tcp://192.1400:192.140 2021年2月2日18:33:59.790 + 0000 INFO [moOpcuaObserverImpl $ ModelReadyChangeChecker(3c8bf12c)] [蜀黍共享线程池-3] OpcuaObserverImpl-opc.tcp://192.168.56.101:4840:modelReadyChecking = MinMaxInterval(分=10,max=30,timeUnit=SECONDS,current=10,step=3),modelChangeChecking=MinMaxInterval(min=60,max=1800,current=60,step=180),modelReadyMinNodesCount=0 2021年2月2日18:33:59.804 + 0000 INFO [moOpcuaObserverImpl $ ModelReadyChangeChecker(3c8bf12c)] [Defaultdispatcher工-2] OpcuaObserverImpl-opc.tcp://192.168.56.101:4840: - >校验(modelReadyMinNodesCount = 0,modelChangeCheckingRunning =假) 02.02.2021 18:33:59.804+0000 INFO [opcua.Milobrowser(1d141b2d)] [Defaultdispatcher-worker-2] 在 nodesCount 方法中 02.02.2021 18:33:59.817+0000 信息 [opcua.Milobrowser(1d141b2d)] [Defaultdispatcher-worker-2] nodesCount=3605

解决方法

客户端/服务器证书验证似乎存在问题。

UA PKI、X509等复杂难懂,更难正确配置,三言两语无法回答。如果您刚开始使用 OPC UA,请尝试跳过服务器策略和用户识别,直到您了解为止。

服务器和客户端将需要证书才能解密或加密用户身份验证。

但是做一些检查:

  • 检查客户端是否在其受信任路径中具有服务器证书。
  • 检查服务器证书是否已更改。服务器不应在每次服务器启动时重新生成其自签名证书,而应仅在安装设置或管理时重新生成。

解决方法:

,

我认为从你的新日志中提取的有意义的异常是这样的:

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

简单的网络错误。服务器不在那里,没有运行,防火墙挡住了等等......

您现在在客户端代码中没有做错任何事情。