gpt4 book ai didi

ssl - CA 认证签名过程中 RDN 属性的排序

转载 作者:太空宇宙 更新时间:2023-11-03 13:09:03 25 4
gpt4 key购买 nike

我很难理解 RDN (RelativeDistinguishedName) 中属性 (AttributeTypeAndValue) 的顺序。

以下是相关的 ASN.1 定义(取自 www.in2eps.com ):

TBSCertificate

TBSCertificate ::= SEQUENCE {
[...]
subject Name,
[...]
}

名字

Name ::= CHOICE {
rdnSequence RDNSequence
}

RDNS 序列

RDNSequence ::= SEQUENCE OF RelativeDistinguishedName

RelativeDistinguishedName

RelativeDistinguishedName ::= SET SIZE (1 .. MAX) OF AttributeTypeAndValue

属性类型和值

AttributeTypeAndValue ::= SEQUENCE {
type AttributeType,
value AttributeValue
}

属性类型

AttributeType ::= OBJECT IDENTIFIER

属性值

AttributeValue ::= ANY -- DEFINED BY AttributeType

如果我创建一个包含“/CN=CommonNameX/O=OrganizationX/...”的 CSR(按此特定顺序),CA 如何以此构建证书?

将主题设置为“.../O=OrganizationX/CN=CommonNameX/”(倒序相同)时,证书将如何构造?

据我所知,RDN 属性的顺序在验证证书链时很重要。因此,我假设必须有一些可用的详细规范?

更重要的是,我还想知道是否有不同的 CA 使用不同的顺序。如果是这样,有人可以指出一些 CA 吗?

编辑:

阅读第一个答案后,我意识到我要求的东西与预期的非常不同。简而言之:预期的问题是,RDN 序列 中元素的顺序是否重要。

抱歉打扰了,我会在之后更正问题的标题...

最佳答案

If I create a CSR containing "/CN=CommonNameX/O=OrganizationX/..." (in this specific order), how does a CA constructs a certificate out of this?

一个体面的 CA 实际上应该忽略 CSR 中提交的 DN,并根据它已验证的信息构建主题 DN。也就是说,通常,他们会根据他们的 CA 策略放置自己的国家、组织、OU(等等)。他们会将 CN 更改为您申请的主机的 CN(例如,或根据证书类型与申请流程相关的任何其他内容)。 CSR 中的内容有助于跟踪在申请过程中提交的公钥的身份,但最多只能用于管理目的。

As far as I know the ordering of the RDN attributes is important when verifying certificate chains. Therefore, I assume there must by some detailed specification available?

是的,顺序很重要 RDNSequence 确实是一个 SEQUENCE OF RelativeDistinguishedName。每个 RDN 本身就是一组(无序的)AVA(属性值断言/AttributeTypeAndValue):SET SIZE (1 .. MAX) OF AttributeTypeAndValue

每个RDN 内容(AVA 的集合)和每个DN(RDN 的序列)的匹配规则在RFC 5280 中定义。 :

   Two naming attributes match if the attribute types are the same and
the values of the attributes are an exact match after processing with
the string preparation algorithm. Two relative distinguished names
RDN1 and RDN2 match if they have the same number of naming attributes
and for each naming attribute in RDN1 there is a matching naming
attribute in RDN2. Two distinguished names DN1 and DN2 match if they
have the same number of RDNs, for each RDN in DN1 there is a matching
RDN in DN2, and the matching RDNs appear in the same order in both
DNs. A distinguished name DN1 is within the subtree defined by the
distinguished name DN2 if DN1 contains at least as many RDNs as DN2,
and DN1 and DN2 are a match when trailing RDNs in DN1 are ignored.

本质上,DN 中的 RDN 需要以正确的顺序排列(SEQUENCE 已排序),但 AVA 的顺序不需要(SET 未排序) : "如果两个相对的可分辨名称 RDN1 和 RDN2 具有相同数量的命名属性并且对于 RDN1 中的每个命名属性在 RDN2 中都有一个匹配的命名属性,则它们匹配。"

实际上,大多数 CA 只对每个 RDN 使用一个属性值对。如果许多依赖于文本序列化(例如 RFC 2253)的实现(不一定是 SSL/TLS 堆栈的一部分,但可以说,它上面的身份验证/授权层)会被混淆,我不会感到惊讶多个 AVA(更具体地说,它们的顺序在每个 RDN 中无关紧要,因此您可以有两个不同的文本序列化,它们实际上是等效的)。

关于ssl - CA 认证签名过程中 RDN 属性的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33080136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com