密钥恢复服务器

Microsoft证书颁发机构 (CA) 可被配置为存档和恢复与证书请求中提交的公钥相关的私钥。 如果密钥丢失,恢复功能非常有用。 默认情况下,只有加密密钥可以存档。 不需要将仅用于签名的密钥存档,因为当私钥丢失时,只需要公钥来验证签名。

若要存档密钥,CA 必须配置为颁发密钥恢复代理 (KRA) 证书,并且已颁发了至少一个证书。 密钥恢复代理是组织授权解密私钥的管理员。 为了增强安全性,我们建议将密钥恢复代理和证书管理器角色分配给不同的个人,允许证书管理器检索但不能解密存档的密钥,并允许密钥恢复代理解密但不检索密钥。

密钥存档

客户端通常使用模板请求证书。 如果模板要求存档私钥,客户端和 CA 将执行以下步骤:

  1. 客户端检索并验证 CA 交换证书,以确定它是否已由用于签署 CA 签名证书的同一密钥进行签署。 这可确保唯一可以解密私钥的 CA 是请求证书的 CA。
  2. CA 交换证书中的公钥用于加密与证书请求关联的私钥,并将请求发送到 CA。
  3. CA 使用与其交换证书关联的私钥来解密客户端发送的私钥,并验证请求中的公钥和私钥是否相关。
  4. CA 使用 KRA 证书中的公钥加密私钥。 如果 CA 颁发了多个 KRA 证书,则会使用每个可用的公钥对私钥进行一次加密,以便任何授权的密钥恢复代理都可以恢复密钥。 加密的私钥存储在证书数据库中。
  5. CA 释放对私钥的所有引用,并安全地释放包含密钥的所有内存并将其清零。 这可确保 CA 无法进一步访问明文格式的密钥。

注意

只有 CMC 请求可用于密钥存档。 CMC 请求由 IX509CertificateRequestCmc 接口表示。

 

密钥恢复

Active Directory 证书服务或证书注册 API 不直接支持恢复密钥。 但是,Microsoft 提供以下应用程序来帮助完成该过程:

  • Certutil.exe是一个命令行程序,可用于检索 CA 配置信息、验证证书、密钥对和证书链,以及备份和还原密钥。 它包含在从 Windows Server 2003 开始的服务器操作系统中。
  • Krecover.exe 是基于对话框的程序,可启用密钥恢复。 它包含在从 Windows Server 2003 开始的资源工具包中。

需执行以下步骤以恢复私钥:

  1. 证书管理器使用证书、请求者或用户的名称查找证书数据库中密钥恢复的潜在候选项。 Certutil -getkey 命令可用于此目的。
  2. 证书管理器获得证书列表后,将使用特定的证书序列号或指纹再次调用 -getkey 命令,以检索 PKCS #7 文件,该文件包含 KRA 证书、用户证书链以及使用 KRA 公钥在存档期间加密的私钥。
  3. 证书管理器将进程的控制权传递给密钥恢复代理,其私钥与 KRA 证书中包含的公钥匹配。
  4. 密钥恢复代理使用 KRA 私钥解密 PKCS #7 文件中返回的存档私钥。 这可以通过使用 Certutil -recoverkey 命令将密钥置于受密码保护的 PKCS #12 文件中来完成。 必须通过安全的带外机制为客户端提供密码。
  5. 客户端导入 PKCS #12 文件,并使用密码检索密钥。

PKI 元素