我创建了自己的证书和私钥(ownCert.der 和 ownKey.pem)。我已将证书作为可信证书添加到 OPC UA 服务器。 OPC UA 服务器还配置为允许使用用户名/密码进行访问。所以两者都是必需的,证书+用户名/密码。
当我使用 python 连接到服务器时,它可以工作。这是我使用的代码:
from opcua import Client
from opcua import ua
client = Client("opc.tcp://serverUrl:4810")
client.set_user('myUsername')
client.set_password('myPassword')
client.application_uri = 'urn:Foo:serverUrl:UaClient:UUID'
client.set_security_string('Basic256Sha256,SignAndEncrypt,/path/to/ownCert.der,/path/to/ownKey.pem')
client.connect()
print ("connected")
client.disconnect()
上面的代码片段有效,一旦连接,我就可以浏览、阅读等..
在 UaExpert 上,我创建一个新的服务器连接并输入相同的数据:
当我单击连接时,出现“BadSecurityChecksFailed”错误:
查看日志,似乎 UaExpert 尝试仅使用证书进行连接,而不是证书+用户名/密码。
如何使用 UaExpert 连接到服务器?
打开安全通道时使用的证书(应用程序实例证书)与用于验证会话的证书不同,并且完全不相关。
现在可能的问题是您的服务器不信任 UaExpert 的应用程序实例证书。