使用C#

时间:2018-10-30 13:26:51

标签: c# client-certificates opc-ua

我正在尝试使用用户名/密码身份验证向OPC UA Simulation Server进行身份验证,但是我收到以下 Bad_SecurityChecksFailed 例外。这是我第一次使用OPC UA,而且我以前没有使用它的经验。也许有人已经遇到了同样的问题,并且可以帮助我。

enter image description here

在我正在使用的模拟服务器(Prosys OPC UA)上,显示证书被拒绝:

enter image description here

该模块正在使用OPCFoundation.NetStandard.Opc.Ua nuget包(https://github.com/OPCFoundation/UA-.NETStandard)。

这是 UserIdentity 变量的数据:

enter image description here

可以看出,IssuedTokenType和PolicyId为null,这可能是问题的一部分,但是我找不到如何初始化它们。

这是 ConfiguredEndpoint 数据:

enter image description here

以下是使用用户名和密码在服务器上创建会话的代码:

enter image description here

在创建会话时,它会抛出AggregateException并带有上述 Bad_SecurityChecksFailed 异常。

这些是在模拟服务器上设置的端点和用户:

enter image description here

enter image description here

我为尝试解决该问题做了什么?

我搜索了C#示例,但没有找到想要的东西。

我发现唯一拥有C#示例的地方是来自Github(https://github.com/OPCFoundation/UA-.NETStandard)上的“ UA Quickstart应用程序”,如果我正确理解的话,它将使用带有用户名和密码的证书。我对证书没有任何经验,也无法理解身份验证的工作原理以及实现方法。

我也在看另一个问题的答案:https://stackoverflow.com/a/46458799/8399585,它提供了有关策略和客户端证书的一些信息,还提到了我收到的错误。但这并未显示应如何配置(实际上,这并不是问题的初衷)。

1 个答案:

答案 0 :(得分:0)

您的服务器返回Bad_SecurityChecksFailed,因为服务器不信任客户端证书。您可以在服务器日志中看到此消息,其中在“未接受远程证书”消息之前显示“将xxx证书添加到拒绝的证书”。我对Prosys不熟悉,但是希望“证书”选项卡使您能够以某种方式信任客户端证书。