当前位置: 首页 > 知识库问答 >
问题:

保护OpenSecureChannel消息和X509IdentityToken?

胡鸿志
2023-03-14

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

  1. 据我所知,在GetEndpoints服务消息之后,客户端会向服务器发送一个OpenSecureChannel请求,这意味着该请求已签名或已签名

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

在本文中提到,信息应始终加密。它如何依赖于传输层?

我还看到Wolfgang Mahnke、Stefan Helmut Leitner和Matthias Damm在OPC统一体系结构书中的另一个描述如下:,

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

在这里,它强调消息是根据安全策略和安全模式保护的,因此我要求澄清安全模式是否为签名的情况?

html" target="_blank">消息也会被加密吗?

一般来说,当MessageSecurityMode为无时,安全策略“必须”为无?“无效”MessageSecurityMode的确切用法是什么?

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

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

在第一行中提到“如果安全策略要求”,当用户令牌签名是X509标识令牌的必填字段时,“如果需要”的上下文是什么?在第二行中提到,如果SecureChannel具有无的安全策略,则需要明确的安全策略,其中“无”表示不交换证书,因此不能使用X509IdtyToken,指的是同一规范中的以下行(第5.6.3节激活会话,pg.no: 40)?

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

为了您的好意,我使用2015年11月发布的规范进行研究。请澄清。

共有1个答案

公孙英飙
2023-03-14

对于第一个问题,规范继续写道“只有当securityPolicyUri不是无时,OpenSecureChannel的这些要求才适用”。因此,答案是SecureChannel将对任何MessageSecurityMode(MessageSecurityMode除外)的OpenSecureChannelRequest/Response进行签名和加密。没有一个

对于第二个问题,如果MessageSecurityMode为None,则安全策略为None。没有MessageSecurityMode的用法。据我所知是无效的。

对于第三个问题,如果securityPolicyUri为None,则不会交换任何申请证书。客户端可以通过X509IdentityToken提供用户身份。令牌由X509证书和签名组成。签名是通过将服务器nonce附加到服务器证书并使用用户证书的私钥进行签名而生成的。

 类似资料:
  • Storm 通过 Trident 对保证消息处理提供了不同的 level ,包括 best effort(尽力而为),at least once (至少一次)和exactly once(至少一次). 这张页面描述如何保证至少处理一次. What does it mean for a message to be "fully processed"?(一条信息被完全处理是什么意思) 一个 tuple

  • 问题内容: Spring Security是一个非常好的框架,广泛用于身份验证和授权。 我有一个要求,其中使用j_spring_security_check对应用程序进行身份验证,并且只有授权用户才能向websocket处理程序提出请求。 我已经按照http://malalanayake.wordpress.com/2014/06/27/spring-security-on-rest- api/

  • 问题内容: 我最近一直在试验Docker,以构建一些可玩的服务,而一直困扰我的一件事是将密码放入Dockerfile。我是一名开发人员,因此将密码存储在源代码中感觉像是一拳。这是否值得关注?关于如何在Dockerfiles中处理密码是否有良好的约定? 问题答案: 绝对是一个问题。Dockerfile通常签入存储库并与其他人共享。一种替代方法是在运行时提供任何凭据(用户名,密码,令牌,任何敏感内容)

  • 目的 使用 Secret 资源类型来存储 MySQL 数据库连接信息。 环境 openshift v3.11.16/kubernetes v1.11.0 步骤 创建工程1. CLI 登录到 OCP $ oc login https://master.example.com:8443 -u admin -p admin2. 创建工程 $ oc new-project lab05 创建 Secret1

  • 通常,我希望将消息发送到另一个路由来处理它,但我不希望为后续步骤修改该消息。做这件事最好的方法是什么? 我发现的另一个选择是使用异步sedaendpoint,它将原始消息返回给生产者并处理副本,但这会引入异步行为,而异步行为可能并不总是可取的。 看来一定有更好的办法?

  • 我遇到了两个关于订购的短语, 生产者发送到特定主题分区的消息将按发送顺序追加。也就是说,如果记录M1与记录M2由同一生产者发送,并且M1首先发送,则M1的偏移量将低于M2并出现在日志中的较早位置。 另一个 问题是,如果存在如#2所述的失败发送,那么该顺序是否仍会保留到特定分区?如果一条消息存在潜在问题,将删除每个分区的所有以下消息“以保留顺序”,或者将发送“正确”的消息,并将失败的消息通知应用程序