当前位置: 首页 > 知识库问答 >
问题:

Milo OPC UA-服务器重新启动时无法从客户端连接到服务器。服务器设置为“用户\令牌\策略\用户名”

甘西岭
2023-03-14

我有milo opcua服务器与USER_TOKEN_POLICY_USERNAME启用并使用UsernameIdtyValidator设置用户名和密码。

从milo客户端,我使用UsernameProvider设置setIdtyProvider

当我运行此设置时,一切正常。

但当我重新启动opcua服务器时,milo客户端将无法重新连接。我得到以下例外:

[milo-shared-thread-pool-2]跳过证书的验证:C=DE,ST=“”,L=Locality,OU=OrganizationUnit,O=Organization,CN=AggrServer@7aaf488fd8d6

新日志

02.02.2021 18:32:55.541 0000警告[opcua.MiloSubscriber(3c5d9688)][DefaultDispatcher-worker-3][Subscriber opc。tcp://192.168.56.101:4840:删除SyncExecutor订阅服务器(3c5d9688)的订阅(1)-opc。tcp://192.168.56.101:4840]返回null,因为UaException:status=Bad_ConnectionRejected,message=io。内蒂。频道AbstractChannel$AnnotatedConnectionException:拒绝连接:/192.168.56.101:4840 02.02.2021 18:32:55.542 0000信息[opcua.MiloBrowser(1d141b2d)][DefaultDispatcher-worker-2]idNameTypeSet。节点。尺寸2021年2月2日18:32:55.542 0000信息[m.o.OpcUaObserverImpl$ModelReadyChangeChecker(3c8bf12c)][DefaultDispatcher-worker-2]OpcUaObserverImpl opc。tcp://192.168.56.101:4840:退出模型检查,因为外部已停止2021年2月18日:33:59.790 0000信息[m.o.MiloConnectorRemote(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@154c9f72aa09}02.02.2021 18:33:59.790 0000信息[m.o.MiloConnectorRemote(74c9951c)][milo-shared-thread-pool-3]opc。tcp://192.168.56.101:4840:通知观察员opc。tcp://192.168.56.101:4840关于ConnectionEvent(state=Connected,prevState=Connecting,label=opc)。tcp://192.168.56.101:4840)2021年2月18日:59.790 0000信息[m.opcua.OpcUaObserverImpl(ff09afd)][milo-shared-thread-pool-3]观察者opc。tcp://192.168.56.101:4840:处理事件ConnectionEvent(state=Connected,prevState=Connecting,label=opc)。tcp://192.168.56.101:4840)2021年2月18日:33:59.790 0000信息[m.o.OpcUaObserverImpl$ModelReadyChangeChecker(3c8bf12c)][milo-shared-thread-pool-3]OpcUaObserverImpl opc。tcp://192.168.56.101:4840:开始时间2021年2月18日:33:59.790 0000信息[m.o.OpcUaObserverImpl$ModelReadyChangeChecker(3c8bf12c)][milo-shared-thread-pool-3]OpcUaObserverImpl opc。tcp://192.168.56.101:4840:modelReadyChecking=MinMaxInterval(最小=10,最大=30,时间单位=s,电流=10,步长=3),modelChangeChecking=MinMaxInterval(最小=60,最大=1800,时间单位=s,电流=60,步长=180),ModelReadyMinodeCount=0 02.02.2021 18:33:59.804 0000信息[m.o.OPCUAOBServer impl$ModelReadyChangeChecker(3c8bf12c)][DefaultDispatcher-worker-2]OPCUAOBServer impl opc。tcp://192.168.56.101:4840: -

共有2个答案

鲁财
2023-03-14

我认为从新日志中提取的有意义的例外是:

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

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

你现在在客户端代码中没有做错什么。

唐渊
2023-03-14

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

UA PKI、X509和其他系统非常复杂,很难理解,甚至更难正确配置,无法用几句话回答这个问题。如果您刚刚开始使用OPC UA,请尝试跳过服务器策略和用户标识,直到您了解了。

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

但是做一些检查:

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

变通方法:

  • 如果可能,禁用客户端和/或服务器安全检查
  • 使用另一个安全配置文件,例如http://opcfoundation.org/UA/SecurityPolicy#None,但您不能使用用户识别策略。
 类似资料:
  • 问题内容: 我有一个RMI服务器和一个桌面RMI客户端。重新启动服务器时,客户端出现错误。是否可以在不重新启动客户端的情况下重新启动RMI连接? [编辑]这是堆栈跟踪: 问题答案: 服务器终止后,您将收到一个ConnectException。之后,您可以使用Naming.lookup获取新的服务器对象。

  • 我无法连接到我的节点。js服务器。当通过节点使用http web服务器在本地运行它时,它工作得很好,但是当连接到外部时,它会加载<code>socket.io。js文件很好,但当尝试使用套接字时,它会从URL中删除端口,无法连接。 而不是在网络请求中执行此操作: http://external-domain.com:3000/socket.io/?EIO=3 它是这样做的: http://exte

  • 我有一个示例Spring启动应用程序来运行图形QL服务器,具有作为客户端,我的pom有以下依赖项: 当我尝试从客户端连接时,出现以下错误: 狩猎决议好心建议。 我还有几个问题: 我应该使用SimpleGraphQLHttpServlet将请求路由到endpoint吗 我正在React UI上使用apollo client,那么它是强制使用apollo server还是spring boot可以工作

  • 我使用的代码女巫只允许4个不同端口上的4个连接。此代码正在工作,但当客户端关闭连接时,它无法重新建立连接。连接被拒绝。认为是因为线程关闭。如何解决这个问题?我无法更改端口号... 从套接字导入* BUFF=25 def服务器(主机、端口): 如果名称==“main”:导入线程

  • 客户端应用程序在以下代码处挂起: