OPC UA客户端 - BadCertificateHostNameInvalid - opcfoundation.org

3
我们有一个旧的VB .NET(Visual Studio 2013 Community Edition)代码,目前通过UDP与PLC进行一些非常基本的数据传输通信。
现在我们需要更紧密地耦合PLC和PC(PC必须能够设置一堆参数,并且Labview程序可能想要直接访问PLC),因此我们的PLC供应商(B&R)说OPC UA是正确的选择。
这似乎类似于在此处提出的问题: OPC-UA client SDK for C#.NET application development 在一次OPC UA入门研讨会上,我们获得了OPC UA客户端的编译版本,如果我启动PLC模拟器,客户端可以连接到PLC模拟器。当然,它会要求输入名称和密码,但是当我尝试连接时,UA示例客户端的弹出窗口显示“证书无法验证:BadCertificateUntrusted”。
好的,我没有证书。您可以点击继续,客户端会继续向前,并显示PLC代码通过OPC UA公开的所有元素的树形结构。一切都很好。
现在,如果我从opcfoundation.org网站下载完整的代码,我可以编译代码,但是,在进行相同的测试序列时,当确认我没有有效证书后,另一个窗口弹出,显示以下信息:
异常(ServiceResultException) BadCertificateHostNameInvalid 服务结果(BadCertificateHostNameInvalid)
顺便提一下,这两个都是OPC UA 1.02。
是否需要在其他地方进行配置?我注意到有一些XML文件(Opc.Ua.SampleClient.Config.xml和Opc.Ua.SampleClient.Endpoints.xml),我想知道它们是否必须被修改以消除此停止点。
我确实记得读过一篇文章,说如果您自动允许这个问题,那么某些东西就不符合OPC UA标准(当然),因此您不能只是让这个问题自动发生,但对我来说没关系。
使用OPC UA代码的缺点是它有点深入(正如原始StackOverflow帖子中的用户Brino所指出的),并且它要求您自己的代码按照GPL发布,因此Unified-Automation看起来非常有吸引力,因为我们可能不想发布我们的源代码。
对于这个特定问题有什么想法吗?
1个回答

4
您看到的警告和异常可能与您的证书无关,而与服务器返回的证书有关。
BadCertificateHostNameInvalid状态代码意味着证书中没有包含服务器主机名作为SubjectAltName,或者它与您实际用于连接服务器的主机名不匹配。
如果可能,请选择SecurityPolicy "None",并查看是否按照您的预期工作。然后,您可以专注于解决证书问题。您可能需要在服务器上设置适当的主机名,然后让其重新生成使用新主机名的证书。您还可能需要确保客户机器能够解析服务器配置使用的任何主机名,以便您可以使用该主机名进行连接。
使用OPC UA代码的缺点是它有点复杂(正如原始StackOverflow帖子中的用户Brino所指出的),并且需要将您自己的代码发布在GPL下,因此Unified-Automation看起来非常诱人,因为我们可能不想发布我们的源代码。
只有当您不是OPC基金会的成员时才是真的。如果您是成员,则可以自由使用代码而无需分发您的源代码。请参阅头文件以获取更多信息,并咨询基金会的“RCL”许可证的实际文本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接