我使用 keytool 创建具有此主题的 x509 证书:
CN=alice, OU=Demo Client, O=myCompany, L=Site1, ST=wll, C=nz
但是在我创建了一个 CSR 并签署了条目(我使用“openssl ca”)之后,我的“O”和“L”突然反转了:
CN=alice, OU=Demo Client, L=Site1, O=myCompany, ST=wll, C=nz
这两个主题仍然被认为是相同的吗?还是顺序很重要?
我使用 keytool 创建具有此主题的 x509 证书:
CN=alice, OU=Demo Client, O=myCompany, L=Site1, ST=wll, C=nz
但是在我创建了一个 CSR 并签署了条目(我使用“openssl ca”)之后,我的“O”和“L”突然反转了:
CN=alice, OU=Demo Client, L=Site1, O=myCompany, ST=wll, C=nz
这两个主题仍然被认为是相同的吗?还是顺序很重要?
它们可能相同也可能不同,具体取决于主题可分辨名称 (DN) 在 CSR 和证书中的编码方式。DN 被定义为 X.501 类型Name
。来自RFC 5280:
Name ::= CHOICE { -- only one possibility for now --
rdnSequence RDNSequence }
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::=
SET SIZE (1..MAX) OF AttributeTypeAndValue
AttributeTypeAndValue ::= SEQUENCE {
type AttributeType,
value AttributeValue }
AttributeType ::= OBJECT IDENTIFIER
AttributeValue ::= ANY -- DEFINED BY AttributeType
该distinguishedNameMatch
规则在RFC 5280 第 7.1 节(强调我的)中定义:
如果属性类型相同并且属性的值经过字符串准备算法处理后完全匹配,则两个命名属性匹配。 如果两个相对专有名称 RDN1 和 RDN2 具有相同数量的命名属性,并且对于 RDN1 中的每个命名属性,在 RDN2 中都有一个匹配的命名属性,则它们匹配。如果两个专有名称 DN1 和 DN2 具有相同数量的 RDN,则它们匹配,对于 DN1 中的每个 RDN,DN2 中都有一个匹配的 RDN,并且匹配的 RDN 在两个 DN 中以相同的顺序出现。如果 DN1 包含的 RDN 至少与 DN2 一样多,并且当 DN1 中的尾随 RDN 被忽略时,DN1 和 DN2 匹配,则专有名称 DN1 位于专有名称 DN2 定义的子树中。
如果组织(O) 和位置(L) 属性出现在 CSR 和证书的主题 DN 中设置的相同相对可分辨名称中,则在其他条件相同的情况下,DN 相同。如果它们在不同的 RDN 中,那么 RDN 的顺序已经改变,使得 DN 不同。