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

eclipse milo opcua客户端与prosys服务器的连接出现问题

米修平
2023-03-14

我正在尝试使用milo(0.4.2)连接到Prosys opcua仿真服务器

  1. 我使用openssl为用户生成了证书/密钥

/home/user/。prosysopc/prosys opc ua仿真服务器/用户_PKI/CA/certs

/home/user/。prosysopc/prosys opc ua仿真服务器/PKI/CA/certs

我检查了prosys用户界面两个证书都出现了

最后,当我使用身份验证模式作为证书和传输安全作为标志(使用步骤1中生成的所有密钥)进行连接时

Exception in thread "main" java.util.concurrent.ExecutionException: UaException: status=Bad_SecurityChecksFailed, message=unknown securityAlgorithmUri: null
    at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)
    at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999)
    at de.api.snippets.derReader.main(derReader.java:68)
Caused by: UaException: status=Bad_SecurityChecksFailed, message=unknown securityAlgorithmUri: null
    at org.eclipse.milo.opcua.stack.core.security.SecurityAlgorithm.fromUri(SecurityAlgorithm.java:143)
    at org.eclipse.milo.opcua.sdk.client.session.SessionFsmFactory.lambda$createSession$49(SessionFsmFactory.java:852)
    at org.eclipse.milo.opcua.sdk.client.session.SessionFsmFactory$$Lambda$2643/0000000000000000.apply(Unknown Source)
    at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072)

我实际上看到这些字段来自prosys empty

基本上在这里我被卡住了,正如你们从图片中看到的,我用安全模式请求endpoint,并收到响应,我不知道是什么。我尝试了米洛提供的所有可用的安全策略,但在所有情况下,我都遇到了相同的情况。

所以第一个问题是什么必须在这个安全算法Uri中指定,并且无论如何都要指向prosys来填充它?

共有2个答案

孙永嘉
2023-03-14

据我所知,这是Prosys堆栈或服务器中的一个bug。

使用标准UA TCP传输时似乎不会发生这种情况,因此请尝试而不是HTTPS。

司徒墨竹
2023-03-14

提醒一下:prosys的问题实际上是由于使用opc over https协议连接到服务器。

所以,在我切换到opc over tcp之后,我设法发现了利用证书对用户和消息级安全标志进行身份验证的endpoint

顺便说一句:如果有人正在搜索使用opensssl生成用户证书的脚本,下面是一个示例conf文件:

openssl req -x509 -config openssl_cert.conf -extensions 'my server exts' -nodes \
            -days 365 -newkey rsa:2048 -keyout user.key -out user.crt

和文件内容:

[ req ]
prompt             = no
distinguished_name = my dn

[ my dn ]
# The bare minimum is probably a commonName
            commonName = user
           countryName = DE
          localityName = DE
      organizationName = comp
organizationalUnitName = comp Dept.
   stateOrProvinceName = DE
          emailAddress = user@example.com
                  name = user
               surname = user
             givenName = user
              initials = uu
           dnQualifier = some

[ my server exts ]
extendedKeyUsage = clientAuth, codeSigning
keyUsage = digitalSignature, keyAgreement, keyEncipherment, nonRepudiation, dataEncipherment, keyCertSign
 类似资料:
  • 我正在尝试使用react和express和socket.io建立一个聊天应用程序,但在尝试使用socket.io连接客户端和服务器时,我遇到了这个错误(我使用的是Firefox,我在所有其他浏览器上遇到了同样的错误) Firefox无法连接到ws:/localhost:5000/socket.io/?eio=4&transport=websocket处的服务器。 加载页面时,与ws://local

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

  • 我试图在我的本地机器上设置Hazelcast服务器和客户端。我还试图通过scala客户端连接到本地Hazelcast服务器。 对于我在下面代码中使用的服务器, Hazelcast的客户是, 在我build.sbt, 我在错误之下陷入依赖问题。 我查阅了hazelcast的文档。我找不到任何好的hazelcast scala示例来理解设置并开始使用。如果有人能帮助解决这个问题,或者分享非常好的sca

  • 我正在尝试使用hazelcast v3。2.4(服务器和客户端上的版本相同)。服务器(我可以安装的简单实现)正在服务器上运行。客户端尝试连接到远程服务器-服务器打印身份验证请求,但我收到以下日志输出(包括异常)-关于我可以做什么不同的想法(复制日志输出和配置文件)。我正在尝试通过TCP/IP进行连接,我检查了网络连接——我没有看到任何东西阻止连接。 堆栈中提到的代码行: 配置 日志输出 服务器输出

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

  • 前面的章节介绍了所有 Redis 的重要功能组件: 数据结构、数据类型、事务、Lua 环境、事件处理、数据库、持久化, 等等, 但是我们还没有对 Redis 服务器本身做任何介绍。 不过, 服务器本身并没有多少需要介绍的新东西, 因为服务器除了维持服务器状态之外, 最重要的就是将前面介绍过的各个功能模块组合起来, 而这些功能模块在前面的章节里已经介绍过了, 所以本章将焦点放在服务器的初始化过程,