搜索

B.3. 标准 X.509 v3 证书扩展参考

download PDF
X.509 v3 证书包含一个扩展字段,允许向证书添加任意数量的其他字段。证书扩展提供了一种向证书添加信息(如备用主题名称和用量限制)的方法。在 PKIX 第 1 部分标准之前开发的较旧的 Netscape 服务器(如 Red Hat Directory Server 和 Red Hat Certificate System)需要定义特定于 Netscape 的扩展。
以下是包含 X.509 v3 扩展的证书部分的示例。证书系统可以以可读的用户打印格式显示证书,如下所示。如本例所示,证书扩展按顺序显示,每个证书只能有一个特定扩展的实例。例如,证书只能包含一个主题密钥标识符扩展。支持这些扩展的证书具有版本 0x2 (对应于版本 3)。

例 B.4. Pretty-Print 证书扩展示例

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
对象标识符 (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 定义的 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 标准,以及 互联网 X.509 公钥基础架构 - 证书和 CRL 配置文件(RFC 339),请参见 RFC 3280。扩展的描述引用讨论扩展的标准草案的 RFC 和部分号;还提供每个扩展的对象标识符(OID)。
证书中的每个扩展都可以指定为 critical 或 noncritical。证书使用的系统(如 Web 浏览器)必须拒绝证书,如果它遇到不识别的关键扩展;但是,如果无法识别非关键扩展,则可以忽略它。

B.3.1. authorityInfoAccess

授权信息访问扩展指示如何以及访问证书签发者的信息。扩展包含一个 accessMethodaccessLocation 字段。accessMethod 由 OID 指定,有关在 accessLocation 中命名的签发者信息的类型和格式。
PKIX Part 1 定义了一个 accessMethod (id-ad-caIssuers),以获取 CA 链中用扩展名比证书签发者更高的证书的 CA 列表。然后,accessLocation 字段通常包含一个 URL,指示用于检索列表的位置和协议(LDAP、HTTP 或 FTP)。
在线证书状态协议(RFC 2560)位于 RFC 2560,定义使用 OCSP 验证证书的 accessMethod (id-ad-ocsp)。然后 accessLocation 字段包含一个 URL,指示用于访问验证证书的 OCSP 响应者的位置和协议。

OID

1.3.6.1.5.5.7.1.1

严重性

这个扩展必须是非关键的。

B.3.2. authorityKeyIdentifier

授权密钥标识符扩展标识与用于签署证书的私钥对应的公钥。当签发者有多个签名密钥(如续订 CA 证书时)时,这个扩展很有用。
扩展由以下一个或多个组成:
  • keyIdentifier 字段中设置的显式键标识符
  • authorityCertIssuer 字段中设置签发者,并在 authorityCertSerialNumber 字段中设置,用于标识证书
如果存在 keyIdentifier 字段,它将用于选择具有匹配 subjectKeyIdentifier 扩展的证书。如果存在 authorityCertIssuerauthorityCertSerialNumber 字段,则会使用它们通过 issuerserialNumber 识别正确的证书。
如果没有这个扩展,则只使用签发者名称来识别签发者证书。
PKIX 第 1 部分要求所有证书的扩展,但自签名的 root CA 证书除外。如果还没有建立密钥标识符,PKIX 建议指定 authorityCertIssuerauthorityCertSerialNumber 字段。这些字段允许构建完整的证书链,方法是将签发者证书中的 SubjectNameCertificateSerialNumber 字段与主题证书的授权密钥标识符扩展中的 authortiyCertIssuerauthorityCertSerialNumber 匹配。

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 省略原因,则 CRL 必须包括吊销。如果 DistributionPoint 省略了 cRLIssuer,则 CRL 必须由签发证书的 CA 发布。
PKIX 建议 CA 和应用程序支持此扩展。

OID

2.5.29.31

严重性

PKIX 建议此扩展标记为非关键,并且对所有证书都支持。

B.3.6. extKeyUsage

扩展的密钥用法扩展表示可以使用认证公钥的目的。这些目的可能还需要或代替在 Key Usage 扩展中指示的基本目的。
扩展的密钥用法扩展必须在 OCSP 响应者证书中包含 OCSP 签名,除非签署响应者验证的证书的 CA 签名密钥也是 OCSP 签名密钥。OCSP 响应者的证书必须由签署响应者验证证书的 CA 直接发布。
Key Usage、extend Key Usage 和 Basic Constraints 扩展一起用来定义要使用的证书的目的。应用程序可以使用这些扩展来禁止在不当使用上下文中使用证书。
表 B.36 “PKIX 扩展的密钥用法扩展使用” 列出 PKIX 定义用于这个扩展的使用,表 B.37 “私有扩展密钥用法扩展使用” 列表使用 Netscape 私有定义的。

OID

2.5.29.37

严重性

如果这个扩展被标记为关键,则证书必须仅用于指定目的之一。如果没有标记为关键状态,它将被视为可能用于识别密钥但不会将证书的使用限制到指定目的的公告字段。

表 B.36. PKIX 扩展的密钥用法扩展使用
使用 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] PKIX 第 1 部分没有定义 OCSP 签名,而是在 RFC 2560 中定义,X.509 Internet Public Key Infrastructure Online 证书状态协议 - OCSP
表 B.37. 私有扩展密钥用法扩展使用
使用 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 扩展

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 签名证书和对象签名证书的 验证(1)。
    WARNING
    使用这个位是相似的。在为任何证书设置前,请仔细考虑其使用的法律后果。
  • 用于 SSL 服务器证书和 S/MIME 加密密钥(2)。
  • 当主题的公钥用于加密用户数据而不是密钥材料时,Data Encipherment (3)。
  • 当主题的公钥用于 密钥协议时,KeyAgreement (4)。
  • KeyCertSign (5)用于所有 CA 签名证书。
  • 用于签署 CRL 的 CA 签名证书的 cRLSign (6)。
  • encipherOnly (7),如果公钥仅用于加密数据。如果设置了此位,则还应设置 keyAgreement
  • 如果公钥仅用于解码数据,则 decipherOnly (8)。如果设置了此位,则还应设置 keyAgreement
表 B.38 “证书使用和清理密钥用法表” 总结了典型证书使用的指南。
如果存在 keyUsage 扩展并标记为 critical,则会使用它强制使用证书和密钥。扩展用于限制密钥的使用;如果扩展不存在或不存在,则允许所有类型的用法。
如果存在 keyUsage 扩展,critical 或 not,它将用于从给定操作的多个证书中选择。例如,它用于区分具有单独证书和密钥对操作的用户的单独签名和加密密钥。

OID

2.5.29.15

严重性

这个扩展可能至关重要或非关键。PKIX 第 1 部分建议在使用时将其标记为 critical。

表 B.38. 证书使用和清理密钥用法表
证书的目的 所需的密钥用法位
CA 签名
  • keyCertSign
  • cRLSign
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 扩展、证书主题名称字段或两者中提供。如果电子邮件地址是主题名称的一部分,它必须采用 PKCS1149 定义的 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 编码 subjectPublicKey 的 SHA-1 哈希来计算,如 PKIX 推荐的。Subject Key Identifier 扩展与 CA 证书的授权密钥标识符扩展一起使用。如果 CA 证书具有 Subject Key Identifier 扩展,则验证的证书授权密钥标识符扩展的密钥标识符应与 CA 主题密钥标识符扩展的密钥标识符匹配。在这种情况下,verifier 不需要重新计算密钥标识符。
PKIX 第 1 部分需要对所有 CA 证书进行这个扩展,并推荐使用所有其他证书。

OID

2.5.29.14

严重性

这个扩展始终不是关键的。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.