通过Telegraf将OPC UA模拟服务器数据写入CnosDB遇证书安全策略问题
解决Telegraf OPC UA插件的证书验证问题
问题原因
你的OPC UA模拟服务器启用了Aes128_Sha256_RsaOaep安全策略,该策略要求客户端提供证书和私钥完成身份验证,但当前Telegraf配置未指定相关证书文件,导致连接失败。
解决方案
方案一:使用无安全策略连接(适合测试环境)
如果模拟服务器允许关闭安全验证,直接修改Telegraf的OPC UA插件配置,指定安全模式和策略为None:
[[inputs.opcua]] endpoint = "opc.tcp://IvandeMacBook-Pro.local:53530/OPCUA/SimulationServer" name = "opcua" security_mode = "None" security_policy = "None"
修改后重启Telegraf即可尝试连接。
方案二:配置证书和私钥(适配强制安全策略的服务器)
- 生成证书和私钥
用OpenSSL生成符合OPC UA标准的自签名证书和私钥,执行以下命令:
# 生成2048位RSA私钥 openssl genrsa -out private_key.pem 2048 # 创建证书签名请求 openssl req -new -key private_key.pem -out cert.csr # 生成有效期365天的自签名证书 openssl x509 -req -days 365 -in cert.csr -signkey private_key.pem -out cert.pem
- 放置证书文件并设置权限
将生成的cert.pem和private_key.pem移动到Telegraf的配置目录(如/etc/telegraf/),并确保Telegraf进程拥有读取权限:
mv cert.pem private_key.pem /etc/telegraf/ chown telegraf:telegraf /etc/telegraf/cert.pem /etc/telegraf/private_key.pem chmod 600 /etc/telegraf/cert.pem /etc/telegraf/private_key.pem
- 修改Telegraf配置
更新OPC UA插件配置,指定证书、私钥路径及对应安全策略:
[[inputs.opcua]] endpoint = "opc.tcp://IvandeMacBook-Pro.local:53530/OPCUA/SimulationServer" name = "opcua" security_mode = "SignAndEncrypt" # 或根据服务器要求选择"Sign"模式 security_policy = "http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep" cert = "/etc/telegraf/cert.pem" key = "/etc/telegraf/private_key.pem"
信任客户端证书
将生成的cert.pem导入到OPC UA模拟服务器的信任列表中,具体操作需参考你使用的模拟服务器文档(通常是将证书文件复制到服务器指定的信任目录)。重启Telegraf服务,验证连接是否成功。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

