基于open62541的OPC UA服务器与OPC UA Commander证书配置问题
问题解答
1. 证书正确配置步骤
客户端(OPC UA Commander)侧
OPC UA Commander的PKI目录结构为 .config/opcua-commander-nodejs/pki/,核心目录分工:
own/certs/:存放客户端自身证书(首次连接时自动生成opcua_commander_certificate.pem)own/private/:存放客户端私钥trusted/certs/:存放信任的服务端证书rejected/certs/:存放拒绝的证书
操作要点:
- 若需手动信任服务端证书,直接将服务端证书(.der或.pem格式)复制到
trusted/certs/目录,重启客户端即可 - 客户端证书默认是PEM格式,而open62541服务端要求信任列表证书为DER格式,需先转换:
openssl x509 -in opcua_commander_certificate.pem -out opcua_commander_certificate.der -outform DER
服务端(open62541)侧
服务端启动参数要求信任列表传入DER格式证书,而非PEM格式:
- 将转换后的
opcua_commander_certificate.der作为启动命令的最后一个参数传入,替换之前的.pem文件 - 若服务端自身证书是PEM格式,也需转换为DER:
# 转换服务端证书 openssl x509 -in server-cert.pem -out server-cert.der -outform DER # 转换服务端私钥 openssl rsa -in server-key.pem -out server-key.der -outform DER
2. OPC UA Commander官方文档获取
OPC UA Commander的官方文档集中在项目仓库的README和docs目录,常用参数可通过命令直接查询:
node dist/index.js --help
比如自定义PKI目录的参数为--pki,示例:
node dist/index.js --pki ./my-custom-pki -e opc.tcp://localhost:4840 -P=Basic256Sha256 -s SignAndEncrypt
3. 服务端代码是否需要修改?
无需修改代码,只需确保启动参数和配置项正确:
- 确认服务端配置中已启用
Basic256Sha256安全策略,且安全模式设置为UA_MESSAGESECURITYMODE_SIGNANDENCRYPT - 启动参数严格遵循格式:
<server-certificate.der> <private-key.der> [<trustlist1.der>, ...],信任列表必须传入DER格式证书
4. 当前证书问题排查
- 验证客户端证书有效性:
openssl x509 -in opcua_commander_certificate.pem -text -noout - 查看服务端日志:open62541会输出证书验证相关的错误信息(如“Certificate not in trust list”),根据日志定位具体问题
- 简化测试:先将安全模式改为
Sign(仅签名不加密),或暂时关闭客户端证书验证,确认基础连接正常后再逐步恢复安全策略
内容的提问来源于stack exchange,提问作者ArthurShelby
相关产品推荐
相关产品推荐

