B.3. 标准 X.509 v3 证书扩展参考
X.509 v3 证书包含一个扩展字段,允许向证书添加任意数量的其他字段。证书扩展提供了一种向证书添加信息(如备用主题名称和用量限制)的方法。在定义了 PKIX 部分 1 标准之前开发的旧版 Netscape 服务器(如 Red Hat Directory Server 和 Red Hat Certificate System)需要 Netscape 特定的扩展。
以下是包含 X.509 v3 扩展的证书部分的示例。证书系统可以以可读的用户打印格式显示证书,如下所示。如本例所示,证书扩展按顺序显示,每个证书只能有一个特定扩展的实例。例如,证书只能包含一个主题密钥标识符扩展。支持这些扩展的证书具有版本 0x2
(对应于版本 3)。
例 B.4. 用户打印证书扩展示例
Data: Version: v3 Serial Number: 0x1 Signature Algorithm: SHA1withRSA - 1.2.840.113549.1.1.5 Issuer: CN=Certificate Manager,OU=netscape,O=ExampleCorp,L=MV,ST=CA,C=US Validity: Not Before: Friday, February 21, 2005 12:00:00 AM PST America/Los_Angeles Not After: Monday, February 21, 2007 12:00:00 AM PST America/Los_Angeles Subject: CN=Certificate Manager,OU=netscape,O=ExampleCorp,L=MV,ST=CA,C=US Subject Public Key Info: Algorithm: RSA - 1.2.840.113549.1.1.1 Public Key: Exponent: 65537 Public Key Modulus: (2048 bits) : E4:71:2A:CE:E4:24:DC:C4:AB:DF:A3:2E:80:42:0B:D9: CF:90:BE:88:4A:5C:C5:B3:73:BF:49:4D:77:31:8A:88: 15:A7:56:5F:E4:93:68:83:00:BB:4F:C0:47:03:67:F1: 30:79:43:08:1C:28:A8:97:70:40:CA:64:FA:9E:42:DF: 35:3D:0E:75:C6:B9:F2:47:0B:D5:CE:24:DD:0A:F7:84: 4E:FA:16:29:3B:91:D3:EE:24:E9:AF:F6:A1:49:E1:96: 70:DE:6F:B2:BE:3A:07:1A:0B:FD:FE:2F:75:FD:F9:FC: 63:69:36:B6:5B:09:C6:84:92:17:9C:3E:64:C3:C4:C9 Extensions: Identifier: Netscape Certificate Type - 2.16.840.1.113730.1.1 Critical: no Certificate Usage: SSL CA Secure Email CA ObjectSigning CA Identifier: Basic Constraints - 2.5.29.19 Critical: yes Is CA: yes Path Length Constraint: UNLIMITED Identifier: Subject Key Identifier - 2.5.29.14 Critical: no Key Identifier: 3B:46:83:85:27:BC:F5:9D:8E:63:E3:BE:79:EF:AF:79: 9C:37:85:84 Identifier: Authority Key Identifier - 2.5.29.35 Critical: no Key Identifier: 3B:46:83:85:27:BC:F5:9D:8E:63:E3:BE:79:EF:AF:79: 9C:37:85:84 Identifier: Key Usage: - 2.5.29.15 Critical: yes Key Usage: Digital Signature Key CertSign Crl Sign Signature: Algorithm: SHA1withRSA - 1.2.840.113549.1.1.5 Signature: AA:96:65:3D:10:FA:C7:0B:74:38:2D:93:54:32:C0:5B: 2F:18:93:E9:7C:32:E6:A4:4F:4E:38:93:61:83:3A:6A: A2:11:91:C2:D2:A3:48:07:6C:07:54:A8:B8:42:0E:B4: E4:AE:42:B4:B5:36:24:46:4F:83:61:64:13:69:03:DF: 41:88:0B:CB:39:57:8C:6B:9F:52:7E:26:F9:24:5E:E7: BC:FB:FD:93:13:AF:24:3A:8F:DB:E3:DC:C9:F9:1F:67: A8:BD:0B:95:84:9D:EB:FC:02:95:A0:49:2C:05:D4:B0: 35:EA:A6:80:30:20:FF:B1:85:C8:4B:74:D9:DC:BB:50
Data:
Version: v3
Serial Number: 0x1
Signature Algorithm: SHA1withRSA - 1.2.840.113549.1.1.5
Issuer: CN=Certificate Manager,OU=netscape,O=ExampleCorp,L=MV,ST=CA,C=US
Validity:
Not Before: Friday, February 21, 2005 12:00:00 AM PST America/Los_Angeles
Not After: Monday, February 21, 2007 12:00:00 AM PST America/Los_Angeles
Subject: CN=Certificate Manager,OU=netscape,O=ExampleCorp,L=MV,ST=CA,C=US
Subject Public Key Info:
Algorithm: RSA - 1.2.840.113549.1.1.1
Public Key:
Exponent: 65537
Public Key Modulus: (2048 bits) :
E4:71:2A:CE:E4:24:DC:C4:AB:DF:A3:2E:80:42:0B:D9:
CF:90:BE:88:4A:5C:C5:B3:73:BF:49:4D:77:31:8A:88:
15:A7:56:5F:E4:93:68:83:00:BB:4F:C0:47:03:67:F1:
30:79:43:08:1C:28:A8:97:70:40:CA:64:FA:9E:42:DF:
35:3D:0E:75:C6:B9:F2:47:0B:D5:CE:24:DD:0A:F7:84:
4E:FA:16:29:3B:91:D3:EE:24:E9:AF:F6:A1:49:E1:96:
70:DE:6F:B2:BE:3A:07:1A:0B:FD:FE:2F:75:FD:F9:FC:
63:69:36:B6:5B:09:C6:84:92:17:9C:3E:64:C3:C4:C9
Extensions:
Identifier: Netscape Certificate Type - 2.16.840.1.113730.1.1
Critical: no
Certificate Usage:
SSL CA
Secure Email CA
ObjectSigning CA
Identifier: Basic Constraints - 2.5.29.19
Critical: yes
Is CA: yes
Path Length Constraint: UNLIMITED
Identifier: Subject Key Identifier - 2.5.29.14
Critical: no
Key Identifier:
3B:46:83:85:27:BC:F5:9D:8E:63:E3:BE:79:EF:AF:79:
9C:37:85:84
Identifier: Authority Key Identifier - 2.5.29.35
Critical: no
Key Identifier:
3B:46:83:85:27:BC:F5:9D:8E:63:E3:BE:79:EF:AF:79:
9C:37:85:84
Identifier: Key Usage: - 2.5.29.15
Critical: yes
Key Usage:
Digital Signature
Key CertSign
Crl Sign
Signature:
Algorithm: SHA1withRSA - 1.2.840.113549.1.1.5
Signature:
AA:96:65:3D:10:FA:C7:0B:74:38:2D:93:54:32:C0:5B:
2F:18:93:E9:7C:32:E6:A4:4F:4E:38:93:61:83:3A:6A:
A2:11:91:C2:D2:A3:48:07:6C:07:54:A8:B8:42:0E:B4:
E4:AE:42:B4:B5:36:24:46:4F:83:61:64:13:69:03:DF:
41:88:0B:CB:39:57:8C:6B:9F:52:7E:26:F9:24:5E:E7:
BC:FB:FD:93:13:AF:24:3A:8F:DB:E3:DC:C9:F9:1F:67:
A8:BD:0B:95:84:9D:EB:FC:02:95:A0:49:2C:05:D4:B0:
35:EA:A6:80:30:20:FF:B1:85:C8:4B:74:D9:DC:BB:50
Copy to clipboardCopied对象标识符 (OID)是识别唯一对象(如证书扩展或公司的证书实践声明)的数字字符串。证书系统附带一组特定于扩展的配置集插件模块,可启用 X.509 证书扩展添加到服务器问题的证书中。其中一些扩展包含用于指定 OID 的字段。
PKIX 标准建议所有对象(如扩展和语句)以 OID 的形式包含在证书中。这可促进共享网络上的机构之间的互操作性。如果发布将在共享网络上使用的证书,请将 OID 前缀注册到适当的注册机构。
OID 由国际标准机构(ISO)注册机构控制。在某些情况下,此授权由 ISO 委派给区域注册授权。在美国,美国美国国家标准(ANSI)管理此注册。
根据情况,使用注册到另一个机构或无法注册 OID 的 OID 可能会产生法律后果。注册可能会受费用购买。如需更多信息,请联系适当的注册机构。
要为自定义对象定义或分配 OID,请为私有企业知道公司的 arc,这是 OID。如果公司没有 arc,则需要获取一个。http://www.alvestrand.no/objectid/ 包含有关注册和使用 OID 的更多信息。
例如,名为 Netscape 的扩展名为 Netscape Certificate Comment
的 Netscape 定义 OID 是 2.16.840.1.113730.1.13。分配给此扩展的 OID 是分层的,包括以前的 Netscape 公司 arc, 2.16.840.1
。OID 定义条目是 http://www.alvestrand.no/objectid/2.16.840.1.113730.1.13.html。
如果证书中存在 OID 扩展并标记为关键,则验证证书的应用程序必须能够解释扩展,包括任何可选的限定符,或者它必须拒绝证书。由于所有应用程序都不太可能解释以 OID 形式嵌入公司的自定义扩展,因此 PKIX 标准建议将扩展始终标记为非关键。
本节总结了定义为互联网 X.509 版本 3 标准一部分的扩展类型,并指示 PKIX 工作组推荐哪些类型。
本参考总结了有关每个证书的重要信息。有关完整详情,请参阅来自 ITU 的 X.509 v3 标准,以及来自 ITU 的 Internet X.509 公钥基础架构 - 证书和 CRL 配置文件( RFC 3 280 )。扩展的描述引用讨论扩展的标准草案的 RFC 和部分号;还提供每个扩展的对象标识符(OID)。
证书中的每个扩展都可以指定为 critical 或 noncritical。证书使用的系统(如 Web 浏览器)必须拒绝证书,如果它遇到不识别的关键扩展;但是,如果无法识别非关键扩展,则可以忽略它。
B.3.1. authorityInfoAccess
授权信息访问扩展指示如何以及访问证书签发者的信息。扩展包含一个 accessMethod
和 accessLocation
字段。accessMethod
由 OID 指定在 accessLocation
中有关签发者的信息和格式。
PKIX Part 1 定义一个 accessMethod
(id-ad-caIssuers
),以获取比使用扩展名的证书在 CA 链中发布的证书的 CA 列表。然后,accessLocation
字段通常包含一个 URL,指示用于检索列表的位置和协议(LDAP、HTTP 或 FTP)。
位于 RFC 2560 的在线证书状态协议(RFC 2560)定义了 accessMethod (id-ad-ocsp
),以使用 OCSP 验证证书。然后,accessLocation
字段包含一个 URL,指示用于访问可以验证证书的 OCSP 响应器的位置和协议。
OID
1.3.6.1.5.5.7.1.1
严重性
这个扩展必须是非关键的。
B.3.2. authorityKeyIdentifier
授权密钥标识符扩展标识与用于签署证书的私钥对应的公钥。当签发者有多个签名密钥(如续订 CA 证书时)时,这个扩展很有用。
扩展由以下一个或多个组成:
-
在
keyIdentifier
字段中设置的显式密钥标识符 -
在
authorityCertIssuer
字段中设置的签发者,以及序列号,在authorityCertSerialNumber
字段中设置,标识证书
如果存在 keyIdentifier
字段,则会使用它来选择具有匹配 subjectKeyIdentifier
扩展的证书。如果存在 authorityCertIssuer
和 authorityCertSerialNumber
字段,则使用它们来识别由 issuer
和 serialNumber
的正确证书。
如果没有这个扩展,则只使用签发者名称来识别签发者证书。
PKIX 第 1 部分要求所有证书的扩展,但自签名的 root CA 证书除外。如果没有建立密钥标识符,PKIX 建议指定 authorityCertIssuer
和 authorityCertSerialNumber
字段。这些字段允许根据主题证书的 Authority Key Identifier 扩展中的 SubjectName
和 Certificate
字段来构建完整的证书链。SerialNumber
OID
2.5.29.35
严重性
这个扩展始终不是关键的,始终被评估。
B.3.3. basicConstraints
此扩展在证书链验证过程中使用,以识别 CA 证书并应用证书链路径长度限制。所有 CA 证书的 cA
组件应设置为 true
。PKIX 建议此扩展不应出现在最终用户证书中。
如果存在 pathLenConstraint
组件,则其值必须大于目前为止处理的 CA 证书数量,从最终用户证书开始并移动链。如果省略 pathLenConstraint
,则链中的所有较高级别 CA 证书在扩展存在时不得包含此组件。
OID
2.5.29.19
严重性
PKIX 第 1 部分要求此扩展被标记为 critical。无论其重要程度如何,都会评估此扩展。
B.3.4. certificatePoliciesExt
证书策略扩展定义一个或多个策略,各自由 OID 和可选的限定符组成。扩展可以包括到签发者证书声明的 URI,也可以以文本形式嵌入签发者信息。此信息可以被启用证书的应用程序使用。
如果存在此扩展,PKIX 第 1 部分建议只使用 OID 识别策略,或者只在需要时使用某些推荐的限定符。
OID
2.5.29.32
严重性
这个扩展可能至关重要或非关键。
B.3.5. CRLDistributionPoints
此扩展定义如何获取 CRL 信息。如果系统被配置为使用 CRL 发布点,则应使用它。
如果扩展包含将类型设置为 URI 的 DistributionPointName
,则 URI 假定为指向当前 CRL 的指针,因为指定的撤销原因,并将由命名的 cRLIssuer
发布。URI 的预期值是为 Subject Alternative Name 扩展定义的值。如果 distributionPoint
省略原因,则所有原因都必须包含撤销。如果 distributionPoint
省略了 cRLIssuer
,则必须由签发证书的 CA 发布 CRL。
PKIX 建议 CA 和应用程序支持此扩展。
OID
2.5.29.31
严重性
PKIX 建议此扩展标记为非关键,并且对所有证书都支持。
B.3.6. extKeyUsage
扩展的密钥用法扩展表示可以使用认证公钥的目的。这些目的可能还需要或代替在 Key Usage 扩展中指示的基本目的。
Extended Key Usage 扩展必须在 OCSP 响应程序的证书中包含 OCSP 签名
,除非响应者验证的证书签名的 CA 签名密钥也是 OCSP 签名密钥。OCSP 响应器的证书需要直接由签署响应者将验证的证书的 CA 直接发布。
Key Usage、extend Key Usage 和 Basic Constraints 扩展一起用来定义要使用的证书的目的。应用程序可以使用这些扩展来禁止在不当使用上下文中使用证书。
下表分别列出 PKIX 定义用于此扩展名的使用,并且使用 Netscape 专用定义的。
OID
2.5.29.37
严重性
如果这个扩展被标记为关键,则证书必须仅用于指定目的之一。如果没有标记为关键状态,它将被视为可能用于识别密钥但不会将证书的使用限制到指定目的的公告字段。
使用 | OID |
---|---|
服务器身份验证 | 1.3.6.1.5.5.7.3.1 |
客户端身份验证 | 1.3.6.1.5.5.7.3.2 |
代码签名 | 1.3.6.1.5.5.7.3.3 |
电子邮件 | 1.3.6.1.5.5.7.3.4 |
时间戳 | 1.3.6.1.5.5.7.3.8 |
OCSP 签名 | 1.3.6.1.5.5.7.3.9[a] |
[a]
OCSP 签名没有在 PKIX 第 1 部分定义,而是在 RFC 2560 中,X.509 互联网公钥基础架构在线证书状态协议 - OCSP.
|
使用 | OID |
---|---|
证书信任列表签名 | 1.3.6.1.4.1.311.10.3.1 |
Microsoft Server Gated Crypto (SGC) | 1.3.6.1.4.1.311.10.3.3 |
Microsoft 加密的文件系统 | 1.3.6.1.4.1.311.10.3.4 |
Netscape SGC | 2.16.840.1.113730.4.1 |
B.3.7. issuerAltName extension
Issuer Alternative Name 扩展用于将互联网风格的身份与证书签发者关联。名称必须使用为 Subject Alternative Name 扩展定义的表单。
OID
2.5.29.18
严重性
PKIX 第 1 部分建议将此扩展标记为非关键。
B.3.8. keyUsage
Key Usage 扩展定义证书中包含的密钥的目的。Key Usage、extend Key Usage 和 Basic Constraints 扩展协同工作,以指定可以使用证书的目的。
如果完全包含这个扩展,请设置位,如下所示:
-
用于 SSL 客户端证书、S/MIME 签名证书和对象签名证书的
数字签名
(0
)。 用于某些 S/MIME 签名证书和对象签名证书的
非Repudiation
(1)。WARNING使用这个位是相似的。在为任何证书设置前,请仔细考虑其使用的法律后果。
-
用于 SSL 服务器证书和 S/MIME 加密证书的密钥加密(
2
)。 -
当主题的公钥用于加密用户数据而不是密钥材料时,Data
Encipherment
(3
)。 -
当主题的公钥用于
密钥协议时,KeyAgre
ement (4
) -
所有 CA 签名证书的
keyCertSign
(5
)。 -
用于签署 CRL 的 CA 签名证书的
cRLSign
(6
)。 -
如果公钥仅用于加密数据,则为
encipherOnly
(7
)。如果设置了这个位,则还应设置keyAgreement
。 -
如果公钥仅用于解码数据,则解压缩(
8
)。如果设置了这个位,则还应设置
keyAgreement
。
表 B.38 “证书使用和对应的密钥使用位” 总结了典型证书使用指南。
如果 keyUsage
扩展存在并标记为 critical,则使用它强制使用证书和密钥。扩展用于限制密钥的使用;如果扩展不存在或不存在,则允许所有类型的用法。
如果存在 keyUsage
扩展(critical 或 not),则会使用它从给定操作的多个证书中进行选择。例如,它用于区分具有单独证书和密钥对操作的用户的单独签名和加密密钥。
OID
2.5.29.15
严重性
这个扩展可能至关重要或非关键。PKIX 第 1 部分建议在使用时将其标记为 critical。
证书的目的 | 所需的密钥用法位 |
---|---|
CA 签名 |
|
SSL 客户端 | digitalSignature |
SSL 服务器 | keyEncipherment |
S/MIME 签名 | digitalSignature |
S/MIME 加密 | keyEncipherment |
证书签名请求 | keyCertSign |
对象签名 | digitalSignature |
B.3.9. nameConstraints
此扩展只在 CA 证书中使用,定义认证路径中后续证书中的所有主题名称都必须位于的名字空间。
OID
2.5.29.30
严重性
PKIX 第 1 部分要求此扩展被标记为 critical。
B.3.10. OCSPNocheck
扩展旨在包含在 OCSP 签名证书中。扩展告知 OCSP 客户端可以在不查询 OCSP 响应程序的情况下信任签名证书(因为回复可能会被 OCSP 响应程序再次签名,客户端也会再次请求签名证书的有效性状态)。这个扩展为 null-valued,其含义由其存在或不存在。
由于证书中存在这个扩展将导致 OCSP 客户端信任使用该证书签名的证书,因此应仔细管理此扩展。如果 OCSP 签名密钥被破坏,那么 PKI 中验证证书的整个过程会在证书的有效期间破坏。因此,使用 OCSPNocheck
的证书应该使用短生命周期发布并经常续订。
OID
1.3.6.1.5.5.7.48.4
严重性
这个扩展应该不是关键的。
B.3.11. policyConstraints
此扩展仅用于 CA 证书,以两种方式限制路径验证。它可用于禁止策略映射或要求路径中的每个证书都包含可接受的策略标识符。
PKIX 要求如果存在,此扩展不得由空序列组成。必须至少有两个可用字段之一。
OID
2.5.29.36
严重性
这个扩展可能至关重要或非关键。
B.3.12. policyMappings
策略映射扩展仅在 CA 证书中使用。它列出了一个或多个 OID 对,用于表示一个 CA 的对应策略等同于另一个 CA 的策略。它在跨对证书的上下文中可能很有用。
CA 和应用程序可以支持此扩展。
OID
2.5.29.33
严重性
这个扩展必须是非关键的。
B.3.13. privateKeyUsagePeriod
Private Key Usage Period 扩展允许证书签发者为私钥指定与证书本身不同的有效期周期。此扩展用于数字签名密钥。
PKIX 第 1 部分建议使用此扩展。符合 PKIX 部分 1 的 CA 不能 生成具有此扩展的证书。
OID
2.5.29.16
B.3.14. subjectAltName
主题备用名称扩展包括 CA 绑定到认证公钥绑定的一个或多个替代(非 X.500)名称。除了证书的主题名称或替换它外,也可以使用它。定义的名称表单包括互联网电子邮件地址(SMTP,如 RFC-822 中定义的、DNS 名称、IP 地址(IPv4 和 IPv6)以及统一资源标识符(URI)。
PKIX 需要此扩展,用于由主题字段中使用的 X.500 可分辨名称(DN)标识的实体。PKIX Part 1 描述了此扩展和主题字段之间的关系的其他规则。
电子邮件地址可以在 Subject Alternative Name 扩展、证书主题名称字段或两者中提供。如果电子邮件地址是主题名称的一部分,则必须采用 PKCS #9 定义的 EmailAddress
属性的形式。支持 S/MIME 的软件必须能够从 Subject Alternative Name 扩展或从主题名称字段读取电子邮件地址。
OID
2.5.29.17
严重性
如果证书的 subject 字段为空,此扩展必须被标记为 critical。
B.3.15. subjectDirectoryAttributes
Subject Directory Attributes 扩展处理证书的主题所需的目录属性值。不建议将其作为提议的 PKIX 标准的重要部分,但可能在本地环境中使用。
OID
2.5.29.9
严重性
PKIX 第 1 部分要求此扩展被标记为非关键。
B.3.16. subjectKeyIdentifier
Subject Key Identifier 扩展标识此证书认证的公钥。如果给定主题名称有多个可用的公钥,这个扩展提供了一种区分公钥的方法。
此扩展的值应通过执行证书的 DER-encoded subjectPublicKey
的 SHA-1 哈希来计算,如 PKIX 推荐的。Subject Key Identifier 扩展与 CA 证书的授权密钥标识符扩展一起使用。如果 CA 证书有 Subject Key Identifier 扩展,则被验证的证书的授权密钥标识符扩展应该与 CA 的主题密钥标识符扩展匹配。在这种情况下,verifier 不需要重新计算密钥标识符。
PKIX 第 1 部分需要对所有 CA 证书进行这个扩展,并推荐使用所有其他证书。
OID
2.5.29.14
严重性
这个扩展始终是非关键的。