1

请澄清以下有关 OPC UA 规范第 4 部分服务的查询,

  1. 根据我在 GetEndpoints Service 消息后的理解,客户端向服务器发送 OpenSecureChannel 请求,这意味着该请求已根据所需端点中的安全策略进行签名或签名和加密。我在规范 Part 4 Services, pg.no 33 中看到了以下几行,

OpenSecureChannel 请求和响应消息应使用发送者的证书进行签名。这些消息应始终加密。如果传输层不提供加密,则这些消息应使用接收方的证书进行加密。

在此提到消息始终被加密。它如何依赖传输层?

我还在 Wolfgang Mahnke、Stefan-Helmut Leitner、Matthias Damm 的 OPC 统一架构书中看到了另一种描述,如下所示,

如果证书被认为是可信的,那么作为第二步,根据安全策略和安全模式保护的 OpenSecureChannel 请求被发送到服务器的选定会话端点。(第 7 章,第 213 页)

在这里,它强调消息是根据安全策略和安全模式保护的,所以我要求澄清一下安全模式是否是签名的场景?

消息也会被加密吗?

  1. 一般来说,当 MessageSecurityMode 为 None 时,SecurityPolicy“必须”为 None?'Invalid' MessageSecurityMode 的确切用法是什么?

  2. X509IdentityToken 规范第 4 部分服务第 7.35.4 节

如果 SecurityPolicy 需要,此令牌应始终伴随 ActivateSession 的 userTokenSignature 参数中的签名。如果 SecureChannel 的 SecurityPolicy 为 None,服务器应该为 UserTokenPolicy 指定一个 SecurityPolicy。

在第一行中提到“如果 SecurityPolicy 需要”,当 userTokenSignature 是 X509IdentityToken 的必填字段时,“如果需要”的上下文是什么?在第二行中提到,如果 SecureChannel 的 SecurityPolicy 为 None,则需要明确的安全策略,其中“None”表示没有交换证书,因此不能使用 X509IdentityToken,请参阅同一规范中的以下行(第5.6.3 激活会话,第 40 页)?

如果令牌是 X509IdentityToken,则证明是使用与证书关联的私钥生成的签名。要签名的数据是通过将最后一个 serverNonce 附加到 CreateSession 响应中指定的 serverCertificate 来创建的。

为了您的信息,我使用 2015 年 11 月发布的规范进行研究。请说清楚。

4

1 回答 1

1

对于第一个问题,规范继续“OpenSecureChannel 的这些要求仅在 securityPolicyUri 不为 None 时适用”。所以答案是 SecureChannel 将为任何 MessageSecurityMode 签名和加密 OpenSecureChannelRequest/Response,MessageSecurityMode.None 除外。

对于第二个问题,如果 MessageSecurityMode 为 None,则 Security 策略为 none。据我所知,没有使用 MessageSecurityMode.Invalid 。

对于第三个问题,如果 securityPolicyUri 为 None,则不交换应用程序证书。客户端可以通过 X509IdentityToken 提供 UserIdentity。令牌由 X509Certificate 和签名组成。通过将服务器随机数附加到服务器证书并使用用户证书的私钥签名来生成签名。

于 2017-10-11T13:51:06.610 回答