CA 备份和还原 Windows PowerShell cmdlet

作者:Justin Turner,Windows 组的高级支持升级工程师

注意

本内容由 Microsoft 客户支持工程师编写,适用于正在查找比 TechNet 主题通常提供的内容更深入的有关 Windows Server 2012 R2 中的功能和解决方案的技术说明的有经验管理员和系统架构师。 但是,它未经过相同的编辑审批,因此某些语言可能看起来不如通常在 TechNet 上找到的内容那么精练。

概述

Windows Server 2012 中引入了 ADCSAdministration Windows PowerShell 模块。 在 Windows Server 2012 R2 中向此模块添加了两个新的 cmdlet,以支持 CA 的备份和还原。

  • Backup-CARoleService

  • Restore-CARoleService

Backup-CARoleService

ADCSAdministration Cmdlet:Backup-CARoleService

参数 - 粗体参数是必需的 说明
-Path - 字符串,用于保存备份的位置
- 这是唯一未命名的参数
- 位置参数

示例:

Backup-CARoleService.-Path c:\adcsbackup1

Backup-CARoleService c:\adcsbackup2

-KeyOnly - 备份不包含数据库的 CA 证书

示例:

Backup-CARoleService c:\adcsbackup3 -KeyOnly

-Password - 指定用于保护 CA 证书和私钥的密码
- 必须是安全字符串
- 对 -DatabaseOnly 参数无效

例如:

Backup-CARoleService c:\adcsbackup4 -Password (Read-Host -prompt "Password:" -AsSecureString)

Backup-CARoleService c:\adcsbackup5 -Password (ConvertTo-SecureString "Pa55w0rd!" -AsPlainText -Force)

-DatabaseOnly - 备份没有 CA 证书的数据库

Backup-CARoleService c:\adcsbackup6 -DatabaseOnly

-Force 1. 允许你覆盖先前存在于 -Path 参数中指定的位置的备份

Backup-CARoleService c:\adcsbackup1 -Force

-Incremental - 执行增量备份

Backup-CARoleService c:\adcsbackup7 -Incremental

-KeepLog 1. 指示命令保留日志文件。 如果未指定开关,默认情况下将截断日志文件,增量方案除外

Backup-CARoleService c:\adcsbackup7 -KeepLog

-Password <安全字符串>

如果使用 -Password 参数,则提供的密码必须是安全字符串。 使用 Read-Host cmdlet 启动交互式提示来要求用户输入安全密码,或使用 ConvertTo-SecureString cmdlet 指定内联密码。

查看以下示例

使用 Read-Host 为 Password 参数指定安全字符串

Backup-CARoleService c:\adcsbackup4 -Password (Read-Host -prompt "Password:" -AsSecureString)

使用 ConvertTo-SecureString 为 Password 参数指定安全字符串

Backup-CARoleService c:\adcsbackup5 -Password (ConvertTo-SecureString "Pa55w0rd!" -AsPlainText -Force)

Restore-CARoleService

ADCSAdministration Cmdlet:Restore-CARoleService

参数 - 粗体参数是必需的 说明
-Path - 字符串,从中还原备份的位置
- 这是唯一未命名的参数
- 位置参数

示例:

Restore-CARoleService.-Path c:\adcsbackup1 -Force

Restore-CARoleService c:\adcsbackup2 -Force

-KeyOnly - 还原不包含数据库的 CA 证书
- 如果备份已使用 -KeyOnly 选项进行,则必须指定此项

示例:

Restore-CARoleService c:\adcsbackup3 -KeyOnly -Force

-Password - 指定 CA 证书和私钥的密码
- 必须是安全字符串

示例:

Restore-CARoleService c:\adcsbackup4 -Password (read-host -prompt "Password:" -AsSecureString) -Force

Restore-CARoleService c:\adcsbackup5 -Password (ConvertTo-SecureString "Pa55w0rd!" -AsPlainText -Force) -Force

-DatabaseOnly - 还原没有 CA 证书的数据库

Restore-CARoleService c:\adcsbackup6 -DatabaseOnly

-Force - 允许覆盖预先存在的密钥
- 是一个可选参数,但在就地还原时,你可能需要它

Restore-CARoleService c:\adcsbackup1 -Force

问题

如果在使用带 -Password 参数的 Backup-CARoleService 时 ConvertTo-SecureString 函数失败,则会进行非密码保护备份。

CA 备份和还原

常见错误

操作 错误 注释
Restore-CARoleService C:\ADCSBackup Restore-CARoleService:进程无法访问文件,因为它正在被另一个进程使用。 (异常来自 HRESULT:

0x80070020)

在运行 Restore-CARoleService cmdlet 之前停止 Active Directory 证书服务服务
Restore-CARoleService C:\ADCSBackup Restore-CARoleService:目录不为空。 (HRESULT 中的异常:0x80070091) 使用 -Force 参数覆盖预先存在的密钥
Backup-CARoleService C:\ADCSBackup -Password (Read-Host -Prompt "Password:" -AsSecureString) -DatabaseOnly Backup-CARoleService:无法使用指定的命名参数解析参数集。 -Password 参数仅用于对私钥进行密码保护,因此在未备份私钥时无效
Restore-CARoleService C:\ADCSBack15 -Password (Read-Host -Prompt "Password:" -AsSecureString) -DatabaseOnly Restore-CARoleService:无法使用指定的命名参数解析参数集。 -Password 参数仅用于对私钥进行密码保护,因此在未还原私钥时无效
Restore-CARoleService C:\ADCSBack14 -Password (Read-Host -Prompt "Password:" -AsSecureString) Restore-CARoleService:系统找不到指定的文件。 (HRESULT 中的异常:0x80070002) 指定的路径不包含有效的数据库备份。 可能是路径无效,或者备份已使用 -KeysOnly 选项进行过?

其他资源

Active Directory 证书服务迁移指南

备份 CA 数据库和私钥

在目标服务器上还原 CA 数据库和配置

请尝试以下操作:使用 Windows PowerShell 在实验室中备份 CA

  1. 通过本课中的命令备份使用密码保护的 CA 数据库和私钥。

  2. 此时请推迟还原 CA。