You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何使用node-opcua连接Kepware OPCUA服务器时设置客户端名称

解决node-opcua客户端证书自定义命名问题

你遇到的问题根源在于仅设置了applicationName,但node-opcua生成客户端证书时核心依赖**applicationUri**这个唯一标识,同时需要让OPCUACertificateManager明确关联自定义应用信息来生成证书。以下是具体解决步骤:

关键修改点

  • 显式配置applicationUri:这是OPC UA规范定义的客户端唯一标识符,证书会与该URI绑定,Kepware通过它区分不同客户端。
  • OPCUACertificateManager传入applicationUriapplicationName:确保证书生成时嵌入自定义的应用名称信息。
  • 清理旧证书:若之前生成过默认的NodeOPCUA-Client证书,需删除PKI目录下的旧证书文件,强制重新生成新证书。

修改后的配置代码

const clientOptions = {
    // 显式设置应用名称和唯一URI
    applicationName: "WBFNodeOPCUA-Client",
    applicationUri: "urn:WBFNodeOPCUA-Client", // 建议用urn格式保证唯一性
    endpointMustExist: true,
    securityMode: MessageSecurityMode.SignAndEncrypt,
    securityPolicy: SecurityPolicy.Basic256Sha256,
    connectionStrategy: {
        maxRetry: 5,
        initialDelay: 1000,
        maxDelay: 10000
    },
    certificateManager: new OPCUACertificateManager({
        automaticallyAcceptUnknownCertificate: true,
        rootFolder: pkiDir,
        keySize: 2048,
        // 将应用信息传入证书管理器,确保证书嵌入自定义名称
        applicationUri: "urn:WBFNodeOPCUA-Client",
        applicationName: "WBFNodeOPCUA-Client"
    }),
};

let client = OPCUAClient.create(clientOptions);

额外注意事项

  • applicationUri必须全局唯一,不同客户端需设置不同URI(比如区分后缀:urn:WBFNodeOPCUA-Client-App1urn:WBFNodeOPCUA-Client-App2)。
  • 清理旧证书:找到pkiDir对应文件夹,删除own/certsown/private下的文件,重新运行客户端会生成带自定义名称的新证书。
  • Kepware信任配置:新生成的客户端证书需被Kepware信任,可手动在Kepware的OPC UA服务器设置中添加信任,生产环境不建议开启自动信任。

内容的提问来源于stack exchange,提问作者Avi4nFLu

火山引擎 最新活动