Active directory X509证书:DN的标识(可分辨名称)

Active directory X509证书:DN的标识(可分辨名称),active-directory,openssl,ldap,openldap,dn,Active Directory,Openssl,Ldap,Openldap,Dn,我使用keytool创建具有此主题的x509证书: CN=alice,OU=Demo客户端,O=myCompany,L=Site1,ST=wll,C=nz 但在我创建CSR并获得签名后,我使用openssl ca,我的O和L突然颠倒过来: CN=alice,OU=Demo客户端,L=Site1,O=myCompany,ST=wll,C=nz 这两个主题仍然被认为是相同的吗?或者顺序重要吗?它们可能相同,也可能不同,这取决于CSR和证书中主题可分辨名称DN的编码方式。DN定义为X.501类型名称。

我使用keytool创建具有此主题的x509证书:

CN=alice,OU=Demo客户端,O=myCompany,L=Site1,ST=wll,C=nz

但在我创建CSR并获得签名后,我使用openssl ca,我的O和L突然颠倒过来:

CN=alice,OU=Demo客户端,L=Site1,O=myCompany,ST=wll,C=nz


这两个主题仍然被认为是相同的吗?或者顺序重要吗?

它们可能相同,也可能不同,这取决于CSR和证书中主题可分辨名称DN的编码方式。DN定义为X.501类型名称。发件人:

DiscriminatedNameMatch规则在emphasis mine中定义:

如果属性类型相同,则两个命名属性匹配,并且 使用处理后,属性值完全匹配 字符串准备算法。两个相对的可分辨名称 如果RDN1和RDN2具有相同数量的命名属性,则它们匹配 RDN1中的每个命名属性都有一个匹配的命名 属性。两个可分辨名称DN1和DN2匹配,如果 具有相同数量的RDN,对于DN1中的每个RDN,都有一个匹配的 DN2中的RDN,并且匹配的RDN在这两个中以相同的顺序出现 DNs。可分辨名称DN1位于 可分辨名称DN2,如果DN1包含的RDN至少与DN2相同, 当忽略DN1中的尾随RDN时,与DN1和DN2匹配


如果组织O和位置L属性出现在CSR和证书的主题DN中设置的相同相对可分辨名称中,则所有其他属性都相等,则DNs相等。如果它们位于不同的RDN中,则RDN的顺序已更改,从而使DNs不同。

不,它们不相同。秩序是重要的。询问CA对您的证书做了什么。我创建了自己的CA,并使用openssl对证书进行签名。为什么会改变L和O的顺序?它们是否相同取决于DNs的编码方式。有关更多信息,请参阅我的答案,如果您希望获得案例的准确答案,请在问题中添加CSR和证书。AVA规则适用于RDN,而不是DNs,在任何情况下,这些都是LDAP规则。它们不一定适用于证书中的内容。不正确。请注意,DN是一系列RelativeDistinguishedName。抱歉@EJP,误读了您的评论。确实,LDAP规则不一定适用。我已经用RFC5280中的规则更新了我的答案,这些规则与LDAP规则相同。
   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