2017-10-11 60 views
1

请澄清有关OPC UA规范第4个部分服务以下查询,保护OpenSecureChannel消息和X509IdentityToken?

  1. 从GetEndpoints服务的消息后,我的理解,客户端发送一个OpenSecureChannel请求,这意味着请求被签名或签名&服务器根据所需端点中的安全策略进行加密。我看到在规范第4个部分服务以下行,pg.no 33

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

在此提及的是,消息应该总是被加密。它如何依赖传输层?

而且我也看到在统一架构书由Wolfgang Mahnke,斯蒂芬 - 赫尔穆特·莱特纳,马蒂亚斯·达姆如下OPC另一种描述,

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

在这里,它突出显示该消息是按照安全策略和安全模式进行保护的,因此如果安全模式是标志,请求澄清该情形?

讯息是否也会被加密?

  1. 通常,当MessageSecurityMode为None时,SecurityPolicy'必须'为None? '无效'MessageSecurityMode的确切用法是什么?

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

该令牌应始终在ActivateSession的 userTokenSignature参数的签名,如果要求的 SECURITYPOLICY陪同。如果SecureChannel的SecurityPolicy为None,则服务器应为 UserTokenPolicy指定SecurityPolicy。

在第一行中提到'如果SecurityPolicy要求',当userTokenSignature是X509IdentityToken的必填字段时,'if required'的上下文是什么?在第二行中提到,如果SecureChannel的SecurityPolicy为None,那么需要显式的安全策略,其中'None'表示没有证书交换,因此不能使用X509IdentityToken,请参考相同规范中的以下行5.6.3 ActivateSession,pg.no:40)?

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

为了您的实物信息,我使用2015年11月发布的规范进行学习。请澄清。

回答

1

对于第一个问题,规范继续“这些OpenSecureChannel的要求只适用于securityPolicyUri不是None”的情况。所以答案是SecureChannel将为任何MessageSecurityMode(除了MessageSecurityMode.None)签署和加密OpenSecureChannelRequest/Response。

对于第二个问题,如果MessageSecurityMode是None,那么安全策略是none。据我所知,没有使用MessageSecurityMode.Invalid。

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

+0

感谢您的澄清,您是否也可以说明OpenSecureChannel消息的加密如何依赖于传输层?在第三个问题中,我的查询是要签名的数据是在前一个CreateSession响应中接收到的服务器证书(包括serverNonce),如果模式为None,那么要签名的数据是什么(因为在这种情况下没有应用程序实例证书交换)? – Gajasri

+0

X509IdentityToken由第三个X509Certificate组成,该第三个X509Certificate标识用户,而不是客户端或服务器的证书。 –

+0

为了澄清,OpenSecureChannel消息的加密不依赖于传输层。对于任何MessageSecurityMode,OSC消息都将进行签名和加密,但“无”。 –