使用 Eclipse Milo 了解 OPC-UA 安全

Understanding OPC-UA Security using Eclipse Milo

我是这个 OPC-UA 世界和 Eclipse Milo 的新手。 我不明白这里的安全是如何工作的, 讨论eclipse-milo提供的client-example

我看到用于连接到 OPCUA 服务器的安全属性很少:

安全策略, 消息安全模式, 客户证书, 客户端密钥对, setIdentityProvider,

  1. 以上配置如何相互关联?

我正在尝试 运行 客户端示例 -> BrowseNodeExample。 此示例在内部 运行s ExampleServer。 ExampleServer 配置为 运行,使用匿名和用户名密码提供程序。它也必须接受 SecurityPolicy.NoneBasic128Rsa15Basic256Basic256Sha256MessageSecurityMode 作为 SignandEncrypt 除了 SecurityPolicy.None 其中 MessageSecurityMode 也是 None

  1. 问题出在 AnonymousProvider 上,我可以使用上面提到的所有 SecurtiyPolicyMessageSecurityMode 对连接到服务器(没有提供客户端证书)。 但我无法对 UsernameProvider 执行相同的操作,仅对 UsernameProvider SecurityPolicy MessageSecurityModeNone 运行 成功配对。 所有其他对抛出安全检查失败异常(当提供证书时),否则用户访问被拒绝(当未提供客户端证书时)。如何实现?

最后,如果有人能指出 Eclipse Milo 的正确用户文档,那就太好了。由于除了示例代码之外我看不到任何文档,并且它们没有记录。

SecurityPolicyMessageSecurityMode 齐头并进。安全策略规定了将用于签名和加密(如果有)的算法集。消息安全模式决定消息是否被签名、签名和加密,或者在不使用安全的情况下两者都不。

如果您计划使用安全性,则必须配置

clientCertificateclientKeyPair。毕竟,如果没有证书和私钥,就无法使用加密或签名。

IdentityProvider 用于提供识别会话用户的凭据(如果有)。

ExampleServer 启动时,它会记录其正在使用临时安全目录,如下所示:security temp dir: /var/folders/z5/n2r_tpbn5wd_2kf6jh5kn9_40000gn/T/security。当客户端使用任何类型的安全连接时,其证书最初不受服务器信任,导致您看到的 Bad_SecurityChecksFailed 错误。在此目录中,您会找到一个文件夹 rejected,其中存储了被拒绝的客户端证书。如果您将证书移动到 trusted 文件夹,则客户端应该能够使用安全连接。