密钥恢复服务器
Microsoft证书颁发机构 (CA) 可被配置为存档和恢复与证书请求中提交的公钥相关的私钥。 如果密钥丢失,恢复功能非常有用。 默认情况下,只有加密密钥可以存档。 不需要将仅用于签名的密钥存档,因为当私钥丢失时,只需要公钥来验证签名。
若要存档密钥,CA 必须配置为颁发密钥恢复代理 (KRA) 证书,并且已颁发了至少一个证书。 密钥恢复代理是组织授权解密私钥的管理员。 为了增强安全性,我们建议将密钥恢复代理和证书管理器角色分配给不同的个人,允许证书管理器检索但不能解密存档的密钥,并允许密钥恢复代理解密但不检索密钥。
密钥存档
客户端通常使用模板请求证书。 如果模板要求存档私钥,客户端和 CA 将执行以下步骤:
- 客户端检索并验证 CA 交换证书,以确定它是否已由用于签署 CA 签名证书的同一密钥进行签署。 这可确保唯一可以解密私钥的 CA 是请求证书的 CA。
- CA 交换证书中的公钥用于加密与证书请求关联的私钥,并将请求发送到 CA。
- CA 使用与其交换证书关联的私钥来解密客户端发送的私钥,并验证请求中的公钥和私钥是否相关。
- CA 使用 KRA 证书中的公钥加密私钥。 如果 CA 颁发了多个 KRA 证书,则会使用每个可用的公钥对私钥进行一次加密,以便任何授权的密钥恢复代理都可以恢复密钥。 加密的私钥存储在证书数据库中。
- CA 释放对私钥的所有引用,并安全地释放包含密钥的所有内存并将其清零。 这可确保 CA 无法进一步访问明文格式的密钥。
注意
只有 CMC 请求可用于密钥存档。 CMC 请求由 IX509CertificateRequestCmc 接口表示。
密钥恢复
Active Directory 证书服务或证书注册 API 不直接支持恢复密钥。 但是,Microsoft 提供以下应用程序来帮助完成该过程:
- Certutil.exe是一个命令行程序,可用于检索 CA 配置信息、验证证书、密钥对和证书链,以及备份和还原密钥。 它包含在从 Windows Server 2003 开始的服务器操作系统中。
- Krecover.exe 是基于对话框的程序,可启用密钥恢复。 它包含在从 Windows Server 2003 开始的资源工具包中。
需执行以下步骤以恢复私钥:
- 证书管理器使用证书、请求者或用户的名称查找证书数据库中密钥恢复的潜在候选项。 Certutil -getkey 命令可用于此目的。
- 证书管理器获得证书列表后,将使用特定的证书序列号或指纹再次调用 -getkey 命令,以检索 PKCS #7 文件,该文件包含 KRA 证书、用户证书链以及使用 KRA 公钥在存档期间加密的私钥。
- 证书管理器将进程的控制权传递给密钥恢复代理,其私钥与 KRA 证书中包含的公钥匹配。
- 密钥恢复代理使用 KRA 私钥解密 PKCS #7 文件中返回的存档私钥。 这可以通过使用 Certutil -recoverkey 命令将密钥置于受密码保护的 PKCS #12 文件中来完成。 必须通过安全的带外机制为客户端提供密码。
- 客户端导入 PKCS #12 文件,并使用密码检索密钥。
相关主题