证书主题X.509

91
根据X.509标准,证书具有一个属性主题。
C=US, ST=Maryland, L=Pasadena, O=Brent Baccala, OU=FreeSoft,
CN=www.freesoft.org/emailAddress=baccala@freesoft.org

这是典型的主题值。问题是这些属性(C,ST,L,O,OU,CN)的类型(或标签)是什么,以及它们的格式是什么?


1
这些属性在[X.520:信息技术-开放式系统互联-目录:选定属性类型]中指定。当它们出现在“主题”或“颁发者”中时,它们被称为“相对可区分名称”(RDN),并且它们形成“可区分名称”(DN)。 DN只是RDN的混合。 - jww
2
短名称(例如CN、O、OU等)在哪里定义(如果有的话)?Windows也使用它们(以及openssl),因此必须至少存在一些非正式的标准。 - David Balažic
@DavidBalažic 请查看RFC4519 §2“属性类型”。它引用了X.520,这应该是此数据的真正权威来源,但是该规范不是公开/免费提供的,而IETF RFC则在两个方面都可以免费获取。 - Patrick Mevzek
@PatrickMevzek 我认为你可能打错了?RFC4519与LDAP有关。 - Nate T
@NateT 根据我评论中解释的原因,X.520 是权威的,但不是免费提供的。RFC 4519 确实是为 LDAP 设计的,它重用了很多 "X" 的东西,因此你可以在那里找到定义。或者看看其中一个答案,引用 RFC 5280。或者再次引用 RFC 4519 的另一个答案。 - Patrick Mevzek
3个回答

123

IETF PKIX(最新版本为RFC 5280)是证书的一个被广泛接受的配置文件。根据4.1.2.4节,必须支持以下字段(我已在括号中添加了OpenSSL长名称和可选短名称):

  • 国家(countryName,C),
  • 组织(organizationName,O),
  • 组织单位(organizationalUnitName,OU),
  • 可分辨名称修饰符(dnQualifier),
  • 州或省名(stateOrProvinceName,ST),
  • 通用名称(commonName,CN)和
  • 序列号(serialNumber)。

还有一个应该支持的元素列表:

  • 地点(locality,L),
  • 职称(title),
  • 姓氏(surName,SN),
  • 名字(givenName,GN),
  • 缩写(initials),
  • 假名(pseudonym)和
  • 世代限定符(generationQualifier)。

值应编码为UTF8String或PrintableString(其中一些仅在PrintableString中,某些例外在IA5String中)。标准还规定了所有字段类型的最大长度(附录A.1)。

出于兼容性的原因,实现还必须支持以IA5String编码的域组件(domainComponent,DC)。请注意电子邮件(emailAddress)及其编码(IA5String),但在DN中被认为是不推荐使用的(它应该在Subject Alternative Name扩展中)。


2
UTF8String 是 0x0C,PrintableString 是 0x13,而 IA5String 则是 0x16。 - Mathias Brossard
哪些属性是UTF8Strings,哪些是PrintableStrings(例如C,O,OU...)。它们有自己的OID吗? - Sergey
@Sergey,你有没有尝试阅读规格说明?你已经收到了RFC的链接。 - Eugene Mayevski 'Callback
是的,在那里没有提到OID,但我在这里找到了它:http://technet.microsoft.com/en-us/library/cc772812(WS.10).aspx。 - Sergey
附录A中有OID。至少有一些关于它们计算的说明。但RFC 5280很难阅读。 - eugene-bright
RFC章节的直接链接:https://tools.ietf.org/html/rfc5280#section-4.1.2.6(该链接指向颁发者部分)。 - ncoghlan

4

对于那些想要这些属性的确切格式,而RFC5280中没有给出的人:

大写标签在RFC4519中有详细说明,它是LDAP模式。该文档还链接到其他RFC,描述了每个特定属性和数据类型的精确语法和语义。

例如,国家代码“C”遵循RFC4517ISO3166,其中给出了实际的两位字母代码。域组件“DC”是根据RFC1034中的DNS名称。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接