RFC 合规性
Certificate Authority Service 使用 ZLint 工具确保 X.509 证书根据 RFC 5280 规则有效。但是,CA 服务并不强制执行所有 RFC 5280 要求,并且使用 CA 服务创建的 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 个八位字节的序列号值。 |
4.1.2.4 | 颁发者字段必须包含非空标识名 (DN)。 |
4.1.2.5 | 符合此配置文件的 CA 必须始终将 2049 年以后的证书有效期编码为 UTCTime |
4.1.2.5.1 | UTCTime 值必须以格林尼治标准时间(祖鲁时间)表示 |
4.1.2.5.1 | UTCTime 值必须包含秒数 |
4.1.2.5.2 | GeneralizedTime 值必须以格林尼治标准时间(祖鲁时间)表示 |
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 | “Extensions”字段必须仅在版本为 3 时显示 |
4.2 | 一个证书不得包含特定扩展程序的多个实例。 |
4.2 | 如果 CA 颁发的主题字段为空序列的证书,则必须支持主题备用名称扩展名 |
4.2.1.1 | AuthorityKeyIdentifier 扩展的 keyIdentifier 字段必须包含在符合条件的 CA 生成的所有证书中,以方便认证路径构建。 |
4.2.1.1 | 合规的 CA 必须将 AuthorityKeyIdentifier 扩展标记为非关键型。 |
4.2.1.2 | 为便于构建认证路径,authorKeyIdentifier 必须出现在所有符合要求的 CA 证书中,即包含基本限制条件扩展(第 4.2.1.9 节)且 cA 的值为 TRUE 的所有证书。 |
4.2.1.2 | 合规的 CA 必须将主题密钥标识符扩展标记为非关键。 |
4.2.1.3 | 如果断言 keyCertSign 位,还必须断言基本约束扩展(第 4.2.1.9 节)中的 cA 位。 |
4.2.1.3 | 当 keyUsage 扩展显示在证书中时,必须至少有一个位设为 1。 |
4.2.1.4 | 一个证书政策 OID 不得在证书政策扩展程序中出现多次。 |
4.2.1.4 | 将限定符与特殊政策 anyPolicy 搭配使用时,必须仅限于本节中提到的限定符。 |
4.2.1.5 | 政策不得映射到特殊值 anyPolicy 或从特殊值 anyPolicy 映射 |
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 而不是 publisher@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 | 包含授权方的 SAN URI([RFC 3986],第 3.2 节)必须包含完全限定域名或 IP 地址作为主机。 |
4.2.1.6 | 如果存在 subjectAltName 扩展项,则序列必须包含至少一个条目。 |
4.2.1.6 | 合规的 CA 不得颁发 subjectAltNames 包含空 GeneralName 字段的证书。 |
4.2.1.7 | 颁发者备用名称必须按 4.2.1.6 中的格式编码 |
4.2.1.8 | 主题目录属性:合规的 CA 必须将此扩展程序标记为非关键扩展程序。 |
4.2.1.9 | 无论出现在何处,pathLenConstraint 字段都必须大于或等于零。 |
4.2.1.9 | 合规的 CA 必须在包含用于验证证书数字签名的公钥的所有 CA 证书中包含此扩展,并且必须在此类证书中将扩展标记为关键。 |
4.2.1.9 | CA 不得包含 pathLenConstraint 字段,除非断言了 cA 布尔值,并且密钥用法扩展声明了 keyCertSign 位。 |
4.2.1.10 | 名称限制条件扩展项(必须仅在 CA 证书中使用)表示一个命名空间,认证路径中后续证书中的所有主题名称都必须位于该空间中。 |
4.2.1.10 | 名称限制条件:合规的 CA 必须将此扩展程序标记为“关键” |
4.2.1.10 | 合规 CA 不得颁发名称限制条件为空序列的证书。也就是说,必须存在 allowSubtrees 字段或 excludedSubtrees。 |
4.2.1.10 | 在此配置文件中,最小值和最大值字段不用于任何名称形式,因此最小值必须为 0,最大值也必须为零。 |
4.2.1.10 | iPAddress 的语法必须符合第 4.2.1.6 节中所述的语法,并专门针对名称限制条件添加下列新增内容:对于 IPv4 地址,GeneralName 的 iPAddress 字段必须包含八 (8) 个以 RFC 4632 (CIDR) 样式编码的八位字节,用于表示地址范围 [RFC 4632]。对于 IPv6 地址,iPAddress 字段必须包含 32 个采用类似编码的八位字节。 |
4.2.1.11 | 合规的 CA 不得在政策限制条件为空序列时颁发证书。也就是说,必须存在 inhibitPolicyMapping 字段或 requireExtendPolicy 字段。 |
4.2.1.11 | 政策限制:合规的 CA 必须将此扩展程序标记为关键。 |
4.2.1.13 | DistributionPoint 不得仅包含原因字段;必须存在 DistributionPoint 或 cRLIssuer。 |
4.2.1.14 | 合规的 CA 必须将此“禁止任何政策”扩展标记为严重。 |
4.2.1.15 | “最新 CRL”扩展项必须由合规的 CA 标记为非关键。 |
4.2.2.1 | 合规的 CA 必须将此授权信息访问扩展标记为非关键型。 |
4.2.2.2 | 合规的 CA 必须将此主题信息访问扩展标记为非关键型。 |
4.1.2.5 | 为了表明证书没有明确定义的失效日期,应为 notAfter 分配 GeneralizedTime 值 99991231235959Z。 |
4.2.1.2 | 为协助应用识别适当的最终实体证书,所有最终实体证书都应包含此扩展 |
4.2.1.3 | 如果存在,合规的 CA 应将此密钥用途扩展标记为“关键”。 |
4.2.1.4 | 合规 CA 不应使用 notificationRef 选项。 |
4.2.1.4 | 合规的 CA 应对显式 Text 使用 UTF8String 编码,但可以使用 IA5String。 |
4.2.1.4 | externalText 字符串不应包含任何控制字符(例如,U+0000 到 U+001F 以及 U+007F 到 U+009F)。 |
4.2.1.4 | 使用 UTF8String 编码时,所有字符序列都应根据 Unicode 标准化形式 C (NFC) 进行标准化 |
4.2.1.5 | 还应在同一证书的证书政策扩展中声明政策映射扩展中命名的每个颁发机构 DomainPolicy。 |
4.2.1.5 | 合规的 CA 应将此政策映射扩展标记为关键。 |
4.2.1.6 | 如果将 subjectAltName 扩展添加到具有非空主题标识名的证书中,符合要求的 CA 应将 subjectAltName 扩展标记为非关键。 |
4.2.1.7 | 如果存在,合规的 CA 应将此颁发者备用名称扩展项标记为非重要名称。 |
4.2.1.10 | 不应对 x400Address、ediPartyName 或 RegisterID 的名称表单施加名称限制。 |
4.2.1.12 | 如果存在 anyExtendedKeyUsage KeyPurposeId,合规 CA 不应将此扩展程序标记为“关键”。 |
4.2.1.13 | CRL 分发点扩展程序应为非关键值 |
4.2.1.13 | 如果存在, DistributionPointName 应至少包含一个 LDAP 或 HTTP URI。 |
4.2.1.13 | 符合要求的 CA 不应使用 nameRelativeToCRLIssuer 来指定分布点名称。 |
4.2.2.1 | 使用 id-ad-caIssuers accessMethod 时,至少应有一个实例指定 accessLocation,它是 HTTP [RFC 2616] 或 LDAP [RFC 4516] URI。 |
7.2 | 为了在当前结构中适应国际化域名,合规的实现必须将国际化域名转换为 ASCII 兼容编码 (ACE) 格式(如 RFC 3490 第 4 节中所指定),然后再存储在 dNSName 字段中。 |