证书颁发机构续订

证书服务 支持续订 证书颁发机构 (CA) 。 续订是为 CA 颁发新证书,以将 CA 的生存期延长到原始证书的结束日期之后。 可以将 CA 作为证书颁发机构 MMC 管理单元中的任务续订,也可以使用Certutil.exe工具 (和 -renewCert 命令) 。

每次续订都会生成一个新的 CA 证书;但是,管理员可以生成新的公钥/私钥对,也可以为 CA 证书重用现有的公钥/私钥对。 为了保持一致性和完整性,CA 证书和 证书吊销列表 (CA 在续订 CA 后会提供续订之前颁发的 CRL) 。 为了使这些可用,证书服务会维护 CA 证书、CRL 和密钥的索引。

在各种 CA 续订操作期间,CA 证书和 CRL 的索引和后缀名称如下所示。

Operation 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 时,证书索引为零,证书后缀为“” (空字符串) 。 每次续订证书时, (密钥是否在) 重复使用,证书索引都会递增 1,证书文件名后缀将变为格式为“ (n) ”的字符串,其中 n 表示 CA 证书已续订的次数。 首次续订后,证书索引为 1,证书文件名后缀为“ (1) ”。 第二次续订后,证书索引为 2,证书文件名后缀为“ (2) ”,依此。

尽管每次续订 CA 时,CA 证书索引和后缀都会递增 1,但仅当续订过程包含新的公钥/私钥对时,CRL 和密钥索引以及文件名后缀才会设置为 CA 证书索引。 否则,这些索引和后缀的值与上一个索引的值相同。 在续订期间,管理员指定是生成新的密钥对还是使用现有密钥对。 (在证书颁发机构 MMC 管理单元中,用户界面中的选项指定新的或现有的密钥对;在 Certutil.exe 工具中,命令 certutil -renewCert 使用新的密钥对续订 CA,而 命令 certutil -renewCert ReuseKeys 使用现有密钥对续订 CA。)

CRL 索引直接绑定到密钥索引,仅当使用新密钥对进行续订时,密钥索引才会设置为 CA 证书索引。 使用新密钥对) 的第一个续订 (之后,CRL 和密钥的索引设置为 1,CRL 和密钥容器名称后缀为“ (1) ”。 但是,第二次续订后,CRL 和密钥的索引仍为 1,CRL 和密钥容器名称后缀也保持“ (1) ”:这是因为第二次续订使用了现有密钥对,并且每个 CA 密钥对仅颁发一个 CRL。

可以通过在 ICertServerExit 和 ICertServerPolicy 接口 (调用 GetCertificateProperty 方法) 检索索引 CA 证书和 CRL。 检索与 CA 证书或 CRL 相关的某些属性时,可以将 CA 证书的从零开始的索引追加到属性名称中。 例如,若要检索与 CA 的第三个证书对应的 CRL 索引,请将属性“CRLIndex.2”传递给 ICertServerPolicy::GetCertificateProperty;对于表,检索到的“CRLIndex.2”属性值将为 1。 一个名为“CertCount”的属性可用于确定 CA 证书的颁发次数。

CA 证书和 CRL 包含一个扩展,用于提供有关证书和密钥索引的信息。 该扩展在 Wincrypt.h 中定义为值为“1.3.6.1.4.1.311.21.1”的szOID_CERTSRV_CA_VERSION。 扩展数据是一个 DWORD 值, (在扩展) 中编码为X509_INTEGER;低 16 位是证书索引,高 16 位是密钥索引。

CA 的初始安装生成证书索引为零,密钥索引为零。 续订 CA 证书将导致证书索引递增。 如果在续订中重复使用密钥,则密钥索引将与上一个密钥索引相同。 如果密钥未重复使用,则密钥索引将与新的证书索引匹配。

ICertServerPolicy::GetCertificateProperty

ICertServerExit::GetCertificateProperty