证书颁发机构续订
证书服务 支持续订 证书颁发机构(CA)。 续订是颁发 CA 的新证书,以将 CA 的生命周期延长到原始证书的结束日期之外。 可以将 CA 续订为证书颁发机构 MMC 管理单元中的任务,也可以使用 Certutil.exe 工具(使用 -renewCert 命令)。
每次续订都会生成新的 CA 证书;但是,管理员可以生成新的公钥/私钥对,也可以重复使用 CA 证书的现有公钥/私钥对。 为了保持一致性和完整性,CA 证书和 证书吊销列出了 CA 在续订 CA 后才会提供其续订之前颁发的(CRL)。 为了提供这些证书,证书服务维护 CA 证书、CRL 和密钥的索引。
在各种 CA 续订作期间,CA 证书和 CRL 的索引和后缀名称如下所示。
操作 | CA 证书索引 | CA 证书文件名后缀 | CRL 和键索引 | CRL 和密钥容器名称后缀 |
---|---|---|---|---|
原始 CA 安装 | 0 | "" | 0 | "" |
使用新密钥续订 | 1 | "(1)" | 1 | "(1)" |
续订重用密钥 | 2 | "(2)" | 1 | "(1)" |
续订重用密钥 | 3 | "(3)" | 1 | "(1)" |
使用新密钥续订 | 4 | "(4)" | 4 | "(4)" |
续订重用密钥 | 5 | "(5)" | 4 | "(4)" |
使用新密钥续订 | 6 | "(6)" | 6 | "(6)" |
续订重用密钥 | 7 | "(7)" | 6 | "(6)" |
安装 CA 后,证书索引为零,证书后缀为“”(空字符串)。 每次续订证书(无论是否重复使用密钥),证书索引都会递增一个,证书文件名后缀将成为“(n)”形式的字符串,其中 n 表示 CA 证书续订的次数。 首次续订后,证书索引为 1,证书文件名后缀为“(1)”。 第二次续订后,证书索引为 2,证书文件名后缀为“(2)”等。
尽管每次续订 CA 时 CA 证书索引和后缀都会递增一个,但仅当续订过程包括新的公钥/私钥对时,CRL 和密钥索引和文件名后缀才会设置为 CA 证书索引。 否则,这些索引和后缀的值与上一个索引的值保持不变。 在续订期间,管理员指定是生成新的密钥对还是使用现有密钥对。 (在证书颁发机构 MMC 管理单元中,用户界面中的选项指定新的或现有的密钥对;在 Certutil.exe 工具中,命令 certutil -renewCert 使用新的密钥对续订 CA,而命令 certutil -renewCert ReuseKeys 使用现有密钥对续订 CA。
CRL 索引直接绑定到密钥索引,该索引仅在新密钥对用于续订时才设置为 CA 证书索引。 在第一次续订(使用了新密钥对)之后,CRL 和密钥的索引设置为 1,CRL 和密钥容器名称后缀为“(1)”。 但是,第二次续订后,CRL 和密钥的索引仍为 1,CRL 和密钥容器名称后缀也保留为“(1)”:这是因为第二次续订使用了现有密钥对,并且每个 CA 密钥对只颁发了一个 CRL。
可以通过调用 GetCertificateProperty 方法(在 ICertServerExit 和 ICertServerPolicy 接口中)来检索索引的 CA 证书和 CRL。 检索与 CA 证书或 CRL 相关的某些属性时,可以将 CA 证书的从零开始的索引追加到属性名称。 例如,若要检索与 CA 的第三个证书相对应的 CRL 索引,请将属性“CRLIndex.2”传递给 ICertServerPolicy::GetCertificateProperty;对于表,检索的“CRLIndex.2”属性值将为 1。 一个名为“CertCount”的属性可用于确定 CA 证书颁发 CA 的次数。
CA 证书和 CRL 包含一个扩展,用于提供有关证书和密钥索引的信息。 扩展在 Wincrypt.h 中定义为szOID_CERTSRV_CA_VERSION,值为“1.3.6.1.4.1.311.21.1”。 扩展数据是 DWORD 值(编码为扩展中的X509_INTEGER):低 16 位是证书索引,高 16 位是密钥索引。
CA 的初始安装将生成证书索引为零,密钥索引为零。 CA 证书的续订将导致证书索引递增。 如果在续订中重复使用密钥,则密钥索引将与上一个密钥索引相同。 如果未重复使用密钥,密钥索引将匹配新的证书索引。
相关主题