You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未启用TLS/证书时Node.js OPC-UA服务器证书警告屏蔽方法

解决Node-OPCUA证书subjectAltName与applicationUri不匹配的警告

方法1:强制使用无安全策略的通信

node-opcua默认启用加密通信,即使未显式配置TLS,也会自动使用生成的证书。通过限定服务器仅使用无安全策略的通信模式,可跳过证书检查:

修改服务器配置,添加securityPolicies和securityModes参数:

var opcOptions = {
        hostname: options.opcHost || "127.0.0.1",
        port: options.opcPort || 4334,
        resourcePath: options.opcName || "opcua",
        buildInfo: {
            productName: "OPCUA",
            buildNumber: "0.1",
            buildDate: new Date()
        },
        // 新增配置:仅启用无安全策略
        securityPolicies: [opcua.SecurityPolicy.None],
        securityModes: [opcua.MessageSecurityMode.None]
    }

var server = new opcua.OPCUAServer(opcOptions);

方法2:调整日志屏蔽特定警告

方式A:仅输出错误日志

将日志级别设为error,直接屏蔽所有警告信息:

const opcua = require("node-opcua");

// 在创建服务器前配置日志级别
opcua.setLogger(opcua.createLogger({
    level: "error"
}));

// 初始化服务器
var opcOptions = { /* 你的原有配置 */ };
var server = new opcua.OPCUAServer(opcOptions);

方式B:精准屏蔽[NODE-OPCUA-W06]警告

自定义日志处理器,仅跳过目标警告,保留其他日志:

const opcua = require("node-opcua");

const defaultLogger = opcua.createLogger({ level: "warn" });
opcua.setLogger({
    log: (message, level, category) => {
        // 过滤掉包含[NODE-OPCUA-W06]的警告
        if (level === "warn" && message.includes("[NODE-OPCUA-W06]")) {
            return;
        }
        defaultLogger.log(message, level, category);
    }
});

// 初始化服务器
var opcOptions = { /* 你的原有配置 */ };
var server = new opcua.OPCUAServer(opcOptions);

方法3:重新生成匹配的证书

警告源于现有证书的主机名与当前服务器主机名不匹配,删除旧证书让node-opcua自动生成新证书:

  • 找到证书路径:C:\Users\xxx\AppData\Roaming\node-opcua-default-nodejs\Config\PKI\own\certs\
  • 删除该路径下的certificate.pem和private_key.pem文件
  • 重启服务器,新证书会匹配当前主机名,警告自动消失

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:30:20