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 | Certificate 中的 signatureAlgorithm 必须包含与序列 tbsCertificate 中的 signature 字段相同的算法标识符(第 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.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 时,才应显示“Extensions”字段 |
4.2 | 证书不得包含多个特定扩展程序实例。 |
4.2 | 如果 CA 为主题字段颁发的证书具有空序列,则 CA 必须支持主题备用名称扩展 |
4.2.1.1 | 为了便于构建认证路径,符合条件的 CA 生成的所有证书都必须包含 authorityKeyIdentifier 扩展的 keyIdentifier 字段。 |
4.2.1.1 | 符合规范的 CA 必须将 authorityKeyIdentifier 扩展标记为非关键扩展。 |
4.2.1.2 | 为方便构建认证路径,所有符合条件的 CA 证书(即包含基本约束条件扩展 [第 4.2.1.9 节] 且 cA 值为 TRUE 的所有证书)中都必须包含 authorityKeyIdentifier。 |
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 |
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:名称必须同时包含 scheme(例如 “http”或“ftp”)和 scheme-specific-part。 |
4.2.1.6 | 包含授权机构 ([RFC 3986],第 3.2 节) 的 SAN URI 必须包含完全限定域名或 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 布尔值且密钥用途扩展声明了 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.11 | 合规 CA 不得颁发政策约束条件为空序列的证书。也就是说,必须包含 inhibitPolicyMapping 字段或 requireExplicitPolicy 字段。 |
4.2.1.11 | 政策限制:符合政策要求的 CA 必须将此扩展标记为关键。 |
4.2.1.13 | DistributionPoint 不得仅包含 reasons 字段;必须包含 distributionPoint 或 cRLIssuer。 |
4.2.1.14 | 符合规范的 CA 必须将此 Inhibit anyPolicy 扩展标记为关键。 |
4.2.1.15 | 符合规范的 CA 必须将最新的 CRL 扩展标记为非关键。 |
4.2.2.1 | 符合规范的 CA 必须将此授权信息访问扩展标记为非关键扩展。 |
4.2.2.2 | 符合规范的 CA 必须将此 Subject Information Access 扩展标记为非关键扩展。 |
4.1.2.5 | 如需指明证书没有明确定义的失效日期,应为 notAfter 分配 GeneralizedTime 值 99991231235959Z。 |
4.2.1.2 | 为帮助应用识别适当的最终实体证书,所有最终实体证书都应包含此扩展 |
4.2.1.3 | 如果存在,符合条件的 CA 应将此密钥用途扩展标记为关键。 |
4.2.1.4 | 合规的 CA 不应使用 noticeRef 选项。 |
4.2.1.4 | 符合规范的 CA 应对 explicitText 使用 UTF8String 编码,但可以使用 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 | 政策映射扩展中命名的每个 issuerDomainPolicy 也应在同一证书的证书政策扩展中声明。 |
4.2.1.5 | 符合政策的 CA 应将此“政策映射”扩展标记为关键。 |
4.2.1.6 | 在包含非空主题标识名的证书中添加 subjectAltName 扩展程序时,符合规范的 CA 应将 subjectAltName 扩展程序标记为非关键扩展程序。 |
4.2.1.7 | 如果存在,符合条件的 CA 应将此颁发者备用名称扩展标记为非关键扩展。 |
4.2.1.10 | 不应对 x400Address、ediPartyName 或 registeredID 名称形式施加名称约束。 |
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,该 accessLocation 应为 HTTP [RFC 2616] 或 LDAP [RFC 4516] URI。 |
7.2 | 为了在当前结构中容纳国际化域名,符合规范的实现必须先将国际化域名转换为 RFC 3490 第 4 节中指定的 ASCII 兼容编码 (ACE) 格式,然后再存储在 dNSName 字段中。 |