RFC 合规性
Certificate Authority Service 使用 ZLint 工具来确保 X.509 证书符合 RFC 5280 规则。不过,CA Service 并未强制执行所有 RFC 5280 要求,因此使用 CA Service 创建的 CA 可能会颁发不合规的证书。
CA Service 强制执行以下 RFC 5280 要求。
| RFC 5280 部分 | Lint 子句 |
|---|---|
| 4.1.1.2 | 证书中的 signatureAlgorithm 必须包含与序列 tbsCertificate(第 4.1.2.3 节)中的签名字段相同的算法标识符。 |
| 4.1.2.1 | 使用扩展程序时,如本配置文件中所预期,版本必须为 3(值为 2)。 |
| 4.1.2.2 | 序列号必须是 CA 为每个证书分配的正整数。 |
| 4.1.2.2 | 符合要求的 CA 不得使用长度超过 20 个八位字节的 serialNumber 值。 |
| 4.1.2.4 | 签发者字段必须包含非空的标识名 (DN)。 |
| 4.1.2.5 | 符合此配置文件的 CA 必须始终将 2049 年之前的证书有效日期编码为 UTCTime |
| 4.1.2.5 | 如需指明证书没有明确定义的失效日期,应将 notAfter 分配为 GeneralizedTime 值 99991231235959Z。 |
| 4.1.2.5.1 | UTCTime 值必须以格林尼治标准时间 (Zulu) 表示 |
| 4.1.2.5.1 | UTCTime 值必须包含秒 |
| 4.1.2.5.2 | GeneralizedTime 值必须以格林尼治标准时间 (Zulu) 表示 |
| 4.1.2.5.2 | GeneralizedTime 必须包含秒 |
| 4.1.2.5.2 | GeneralizedTime 值不得包含小数秒 |
| 4.1.2.6 | 如果正文是 CA(例如,存在基本限制扩展,如 4.2.1.9 节中所述,并且 cA 的值为 TRUE),则正文字段必须填充一个非空的标识名,该名称与正文 CA 颁发的所有证书中颁发者字段(4.1.2.4 节)的内容相匹配。 |
| 4.1.2.8 | 只有当版本为 2 或 3 时,唯一标识符字段才必须显示 |
| 4.1.2.8 | 符合此配置文件的 CA 不得生成具有唯一标识符的证书。 |
| 4.1.2.9 | 仅当版本为 3 时,才必须显示扩展字段 |
| 4.2 | 证书不得包含特定扩展程序的多个实例。 |
| 4.2 | 如果 CA 签发的证书的主题字段为空序列,则 CA 必须支持主题备用名称扩展项 |
| 4.2.1.1 | authorityKeyIdentifier 扩展的 keyIdentifier 字段必须包含在符合要求的 CA 生成的所有证书中,以方便构建证书路径。 |
| 4.2.1.1 | 符合要求的 CA 必须将 authorityKeyIdentifier 扩展标记为非关键。 |
| 4.2.1.2 | 为方便证书路径构建,authorityKeyIdentifier 必须出现在所有符合要求的 CA 证书中,即所有包含基本限制扩展(第 4.2.1.9 节)且 cA 值为 TRUE 的证书。 |
| 4.2.1.2 | 符合要求的 CA 必须将正文密钥标识符扩展标记为非关键。 |
| 4.2.1.2 | 为了帮助应用识别合适的最终实体证书,所有最终实体证书中都应包含此扩展 |
| 4.2.1.3 | 如果 keyCertSign 位被断言,则基本限制条件扩展程序(第 4.2.1.9 节)中的 cA 位也必须被断言。 |
| 4.2.1.3 | 当证书中出现 keyUsage 扩展时,必须将至少一位设置为 1。 |
| 4.2.1.3 | 如果存在,符合要求的 CA 应将此密钥用途扩展标记为关键。 |
| 4.2.1.4 | 一个证书政策 OID 不得在证书政策扩展中出现多次。 |
| 4.2.1.4 | 如果限定符与特殊政策 anyPolicy 搭配使用,则必须仅限于本部分中标识的限定符。 |
| 4.2.1.4 | 符合要求的 CA 不应使用 noticeRef 选项。 |
| 4.2.1.4 | 符合要求的 CA 应该使用 UTF8String 编码来表示 explicitText,但也可以使用 IA5String。 |
| 4.2.1.4 | explicitText 字符串不应包含任何控制字符(例如U+0000 到 U+001F 和 U+007F 到 U+009F)。 |
| 4.2.1.4 | 使用 UTF8String 编码时,所有字符序列都应根据 Unicode 规范化形式 C (NFC) 进行规范化 |
| 4.2.1.5 | 政策不得映射到特殊值 anyPolicy 或从该值映射 |
| 4.2.1.5 | 政策映射扩展中命名的每个 issuerDomainPolicy 也应在同一证书的证书政策扩展中进行断言。 |
| 4.2.1.5 | 符合要求的 CA 应将此政策映射扩展标记为关键。 |
| 4.2.1.6 | 每当要将此类身份(SAN 中的任何内容)绑定到证书中时,都必须使用主题备用名称(或签发者备用名称)扩展项; |
| 4.2.1.6 | 如果主题字段包含空序列,则签发 CA 必须包含标记为关键的 subjectAltName 扩展。 |
| 4.2.1.6 | 当 subjectAltName 扩展程序包含互联网邮件地址时,该地址必须存储在 rfc822Name 中。 |
| 4.2.1.6 | 对于 IP 版本 4(如 [RFC 791] 中所指定),八位组字符串必须恰好包含四个八位组。对于 IP 版本 6(如 [RFC 2460] 中所指定),八位字节字符串必须正好包含 16 个八位字节。 |
| 4.2.1.6 | 当 subjectAltName 扩展包含域名系统标签时,域名必须存储在 dNSName(一种 IA5String)中。 |
| 4.2.1.6 | SAN:dNSName 必须采用“首选名称语法” |
| 4.2.1.6 | 不得使用 dNSName 为“ ”的 subjectAltName 扩展 |
| 4.2.1.6 | 不得使用互联网电子邮件地址的 DNS 表示法(subscriber.example.com 而不是 subscriber@example.com) |
| 4.2.1.6 | 当 subjectAltName 扩展程序包含 URI 时,名称必须存储在 uniformResourceIdentifier(一种 IA5String)中。 |
| 4.2.1.6 | SAN URI:名称不得为相对 URI,并且必须遵循 [RFC 3986] 中指定的 URI 语法和编码规则。 |
| 4.2.1.6 | SAN URI:名称必须同时包含方案(例如 “http”或“ftp”)和特定于方案的部分。 |
| 4.2.1.6 | 包含授权 ([RFC 3986],第 3.2 节) 的 SAN URI 必须包含完全限定域名或 IP 地址作为主机。 |
| 4.2.1.6 | 如果存在 subjectAltName 扩展,则序列必须包含至少一个条目。 |
| 4.2.1.6 | 符合要求的 CA 不得签发包含空 GeneralName 字段的 subjectAltNames 的证书。 |
| 4.2.1.6 | 如果证书中包含 subjectAltName 扩展项,且主题标识名不为空,则符合规范的 CA 应将 subjectAltName 扩展项标记为非关键。 |
| 4.2.1.7 | 颁发者备用名称必须按照 4.2.1.6 中的规定进行编码 |
| 4.2.1.7 | 如果存在,符合要求的 CA 应将此签发者备用名称扩展项标记为非关键。 |
| 4.2.1.8 | 主题目录属性:符合规范的 CA 必须将此扩展标记为非关键。 |
| 4.2.1.9 | 如果出现,pathLenConstraint 字段必须大于或等于零。 |
| 4.2.1.9 | 符合要求的 CA 必须在所有包含用于验证证书上的数字签名的公钥的 CA 证书中包含此扩展程序,并且必须在这些证书中将该扩展程序标记为关键。 |
| 4.2.1.9 | 除非 cA 布尔值为 true 且密钥用途扩展程序断言 keyCertSign 位,否则 CA 不得包含 pathLenConstraint 字段。 |
| 4.2.1.10 | 名称限制条件扩展程序必须仅在 CA 证书中使用,用于指明一个命名空间,认证路径中后续证书的所有正文名称都必须位于该命名空间内。 |
| 4.2.1.10 | 名称限制条件:符合要求的 CA 必须将此扩展标记为关键扩展 |
| 4.2.1.10 | 符合要求的 CA 不得颁发名称限制条件为空序列的证书。也就是说,必须存在 permittedSubtrees 字段或 excludedSubtrees 字段。 |
| 4.2.1.10 | 在此个人资料中,最小和最大字段不与任何名称形式搭配使用,因此,最小字段必须为零,最大字段必须不存在。 |
| 4.2.1.10 | iPAddress 的语法必须如第 4.2.1.6 节中所述,但以下内容是专门针对名称限制添加的:对于 IPv4 地址,GeneralName 的 iPAddress 字段必须包含 8 个八位字节,并以 RFC 4632 (CIDR) 的样式进行编码,以表示地址范围 [RFC 4632]。对于 IPv6 地址,iPAddress 字段必须包含 32 个类似编码的八位字节。 |
| 4.2.1.10 | 不应对 x400Address、ediPartyName 或 registeredID 名称形式施加名称限制。 |
| 4.2.1.11 | 符合要求的 CA 不得颁发政策限制为空序列的证书。也就是说,必须存在 inhibitPolicyMapping 字段或 requireExplicitPolicy 字段。 |
| 4.2.1.11 | 政策限制:符合要求的 CA 必须将此扩展标记为关键。 |
| 4.2.1.12 | 如果存在 anyExtendedKeyUsage KeyPurposeId,则符合规范的 CA 不应将此扩展标记为关键。 |
| 4.2.1.13 | DistributionPoint 不得仅包含 reasons 字段;必须存在 distributionPoint 或 cRLIssuer。 |
| 4.2.1.13 | CRL 分布点扩展程序应为非关键扩展程序 |
| 4.2.1.13 | 如果存在,DistributionPointName 应至少包含一个 LDAP 或 HTTP URI。 |
| 4.2.1.13 | 符合规范的 CA 不应使用 nameRelativeToCRLIssuer 来指定分发点名称。 |
| 4.2.1.14 | 符合要求的 CA 必须将此禁止 anyPolicy 扩展标记为关键。 |
| 4.2.1.15 | 符合要求的 CA 必须将最新 CRL 扩展标记为非关键。 |
| 4.2.2.1 | 符合要求的 CA 必须将此授权信息访问扩展标记为非关键。 |
| 4.2.2.1 | 使用 id-ad-caIssuers accessMethod 时,至少一个实例应指定一个作为 HTTP [RFC 2616] 或 LDAP [RFC 4516] URI 的 accessLocation。 |
| 4.2.2.2 | 符合要求的 CA 必须将此主题信息访问扩展标记为非关键。 |
| 7.2 | 为了在当前结构中容纳国际化域名,符合规范的实现必须在将国际化域名存储到 dNSName 字段之前,按照 RFC 3490 的第 4 节中的规定将其转换为 ASCII 兼容编码 (ACE) 格式。 |