如何更新即将过期的root CA证书?
确认CA证书是否过期
查询根证书服务器
管理员长期不登录CA服务器,不知道那台服务器承载了该角色
在某台AD内的服务器,如域控上,windows 命令行运行
certutil -config - -ping
在弹出窗口可以定位根证书服务器

检查根证书的过期时间
登录根证书服务器,运行以下命令查看当前根证书:
certutil -viewstore "My"

或者“开始”--“运行”--certlm.msc
在证书管理控制台--个人-证书,检查证书的过期时间,确认证书确实即将过期

检查CA证书的配置
通过命令行检查
certutil -getreg CA\ValidityPeriod
certutil -getreg CA\ValidityPeriodUnits

获知有效期为2年
通过注册表检查
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\flow-ever-ca

备份CA服务器
备份 CA 数据库和证书
创建备份目录C:\CA_backup
以管理员运行命令行
certutil -backupDB C:\CA_Backup
certutil -backupKey C:\CA_Backup

备份文件:

备份 CA 配置
这将导出当前 CA 注册表配置。
certutil -getreg CA>c:\CA_Backup\CA_config.txt
备份文件夹内会生成CA_config.txt

更新CA证书
方法1:沿用现有的密钥(推荐)
-
打开“证书颁发机构”管理控制台(
certsrv.msc)。
- 右键 CA 服务器名称 → 所有任务 → 续订 CA 证书。
-
选择不创建新密钥(使用相同的私钥)。
- 证书续期后,重新启动 AD CS 服务:
net stop certsvc
net start certsvc
方法2:用新的密钥对更新证书
如果希望增强安全性,可以选择使用新密钥对更新根 CA。步骤如下:
-
停止证书服务
net stop certsvc
-
使用新密钥续订 CA 证书
certutil -renewCert ReuseKeys:0
-
重新启动证书服务
net start certsvc
更新信任链
更新根证书后,需要在域内分发新证书,以确保所有受信任设备正常运行。
导出新根证书
在 CA 服务器上,运行:
certutil -ca.cert C:\CA_Backup\NewRootCA.cer
分发根证书到域内设备
GPO 自动分发(适用于域环境)
- 在 域控制器 上运行
gpmc.msc(组策略管理控制台)。
- 创建或编辑 GPO,路径:
计算机配置 → Windows 设置 → 安全设置 → 公钥策略 → 受信任的根证书颁发机构
- 导入
C:\CA_Backup\NewRootCA.cer,等待 GPO 生效。
手动安装(适用于非域设备)
certutil -addstore -f root C:\CA_Backup\NewRootCA.cer
分发到子 CA 服务器如果有 子 CA,必须在子 CA 上安装新根证书:
certutil -addstore root path\NewRootCA.cer
certutil -addstore CA path\NewRootCA.cer
验证更新是否成功
确认新根证书生效
certutil -viewstore "My"
检查新证书是否生效
确保客户端信任新证书
将根证书拷贝到客户端,如C:\NewRootCA.cer路径
在客户端(如域成员服务器),运行:
certutil -verify C:\NewRootCA.cer
确保证书链正确。
更新web服务器、和其他依赖证书的服务
如果有 IIS、VPN、RADIUS 服务器或其他使用 CA 证书的应用程序,必须更新其证书配置。
- 在 CA 服务器上,重新颁发 新的服务器证书。
- 在 IIS 或 VPN 服务器上,安装新证书并更新绑定。