HQY

×

Windows Server Active Directory 证书服务(AD CS)完全指南【二】

hqy hqy 发表于2026-05-27 23:25:16 浏览8 评论0

抢沙发发表评论

Windows Server Active Directory 证书服务(AD CS)完全指南【二】

图片

前期回顾:
Windows Server Active Directory 证书服务(AD CS)完全指南【一】
Windows 组策略实战指南:从入门到精通【一】
Windows 组策略实战指南:从入门到精通【二】
Active Directory 域服务(AD DS)完整配置教程

目录

  1. 7. PKI 设计注意事项
  2. 8. 证书分发(组策略)
  3. 9. 导出带私钥的证书
  4. 10. 配置证书吊销列表(CRL)
  5. 11. 续订根 CA 证书
  6. 12. 迁移证书颁发机构
  7. 13. 证书信任与链



7. PKI 设计注意事项

规划 AD CS 部署时,需要考虑以下核心设计决策:

CA 层次结构

  • • 单层(独立根 CA):适合小型组织,根 CA 同时也是颁发 CA
  • • 两层(根 CA + 从属颁发 CA):推荐生产环境,根 CA 离线保护,从属 CA 在线颁发
  • • 三层(根 CA + 中间 CA + 颁发 CA):大型多域组织

加密设置

项目
建议值
密钥长度
≥ 2048-bit RSA 或 256-bit ECC
哈希算法
SHA256 或更高
CA 证书有效期
根 CA:5-10 年;颁发 CA:2-5 年
证书模板有效期
根据用途设定(Web Server: 1年, User: 2年)

CRL 发布

  • • CDP(CRL 分发点):指定 CRL 的发布位置(LDAP、HTTP、FILE)
  • • AIA(颁发机构信息访问):指定 CA 证书下载地址
  • • 建议同时配置 LDAP 和 HTTP CDP,确保内网和外网客户端均能访问 CRL

查看当前 CA 扩展配置



1
2

certutil -getconfig
certutil -viewExitCode




8. 证书分发(组策略)

前置条件

  • • 带私钥的证书(可从 certlm.msc 导出)
  • • 域控制器或安装了 RSAT 的管理站
  • • 具备 Domain Admins 或 Enterprise Admins 权限

通过组策略分发根证书(UI)

  1. 1. 在管理站打开 组策略管理gpmc.msc
  2. 2. 创建新 GPO 或编辑现有 GPO,链接到目标 OU
  3. 3. 右键 GPO → "编辑"
  4. 4. 导航至 计算机配置 → 策略 → Windows 设置 → 安全设置 → 公钥策略
  5. 5. 右键 "受信任的根证书颁发机构" → "导入"
图片
  1. 6. 使用证书导入向导,选择 .cer 或 .crt 文件
  2. 7. 完成导入
图片

为指定 OU 配置证书自动注册

通过组策略的 "自动注册" 设置,域计算机会自动申请和更新证书。此设置同时适用于计算机证书(计算机账户)和用户证书(用户账户)。

步骤 1:创建或编辑 GPO

  1. 1. 打开 组策略管理(gpmc.msc)
  2. 2. 选择目标 OU,右键 → "在这个域中创建 GPO 并在此处链接"(或直接编辑已有 GPO)

步骤 2:配置自动注册

  1. 1. 在 GPO 编辑器中,导航到:


    1

    计算机配置 → Windows 设置 → 安全设置 → 公钥策略



  2. 2. 右侧找到 "证书服务客户端 - 自动注册",双击打开属性
  3. 3. 在 "自动注册" 选项卡中:
    • • 勾选 "启用"
    • • 勾选 "续订过期证书、更新未决证书并删除吊销的证书"
    • • 勾选 "更新使用证书模板的证书"
  4. 4. 点击 "确定" 保存
图片

步骤 3:确认证书模板已发布到 CA

自动注册的前提是企业 CA 已经将证书模板配置为 "要颁发的证书模板"

  1. 1. 打开 证书颁发机构 管理单元
  2. 2. 左侧展开 CA 名称 → 右键 "证书模板" → "新建" → "要颁发的证书模板"
  3. 3. 确认需要自动颁发的模板(如 User、计算机)已在列表中

步骤 4:客户端刷新组策略

在目标计算机上执行:



1
2
3
4

# 刷新组策略
 gpupdate /force
 
# 或重启计算机,组策略会在启动时自动应用



验证客户端证书是否自动颁发



1
2
3
4
5

# 在客户端计算机上查看已颁发的证书
certutil -user -store My
 
# 查看自动注册状态
certutil -user -policystore My



客户端计算机在组策略生效后,会自动向企业 CA 申请计算机证书(如果使用计算机账户),域用户登录后会自动申请用户证书。



9. 导出带私钥的证书

UI 方式

  1. 1. 打开 certlm.msc(本地计算机证书管理)
  2. 2. 导航到要导出的证书(个人 或 受信任的根证书颁发机构 等)
  3. 3. 右键证书 → 所有任务 → 导出
  4. 4. 选择 "是,导出私钥"
  5. 5. 文件格式选择 "个人信息交换 - PKCS #12 (.PFX)"
  6. 6. 勾选 "包括证书路径中的所有证书"(方便完整迁移)
  7. 7. 设置密码保护私钥(加密方法选择 AES256-SHA256
  8. 8. 选择保存路径

命令行方式



1
2
3
4
5

# 列出当前用户个人存储中的证书
certutil -user -store My
 
# 导出指定证书(需要私钥)
certutil -exportPFX My "<证书序列号或主题名>" "\\share\exports\mycert.pfx"





1
2
3
4
5
6

# PowerShell 方式
$cert = Get-ChildItem -Path Cert:\CurrentUser\My |
    Where-Object { $_.Subject -like "*username*" }
 
Export-PfxCertificate -Cert $cert -FilePath "C:\temp\usercert.pfx" `
    -Password (ConvertTo-SecureString -String "P@ssw0rd" -Force -AsPlainText)



导入导出的证书



1
2
3
4

# 导入 PFX 到目标机器
Import-PfxCertificate -FilePath "\\share\exports\mycert.pfx" `
    -CertStoreLocation Cert:\LocalMachine\My `
    -Password (ConvertTo-SecureString -String "P@ssw0rd" -AsPlainText -Force)




10. 配置证书吊销列表(CRL)

CRL(Ccertificate Revocation List)公布已被吊销的证书序列号,客户端在验证证书时会检查 CRL。

UI 方式配置 CRL 发布

  1. 1. 打开 证书颁发机构 管理单元
  2. 2. 右键 CA 名称 → "属性"
  3. 3. 点击 "扩展" 选项卡
  4. 4. 在 "选择扩展" 中选择 "CRL 分发点 (CDP)"
  5. 5. 点击 "添加",输入 CRL 发布路径:


    1
    2
    3

    http://pki.contoso.com/CertEnroll/<CAName><CRLNameSuffix>.crl
    ldap:///CN=<CAName><CRLNameSuffix>,CN=CDP,CN=Public Key Services,CN=Services,<ConfigurationContainer><CRLNameSuffix>
    file://\\pki.contoso.com\CertEnroll\<CAName><CRLNameSuffix>.crl



  6. 6. 勾选 "包含在 CRL。客户端用来找到此 CA 的位置" 和 "包含在已颁发证书的 CDP 扩展中"
  7. 7. 对 "颁发机构信息访问 (AIA)" 做类似配置

PowerShell 配置 CDP



1
2
3
4
5

# 查看当前 CDP 配置
certutil -getreg CA\CRLPublicationURLs
 
# 添加 HTTP CDP
certutil -setreg CA\CRLPublicationURLs "1:http://pki.contoso.com/CertEnroll/%38%8%9%c.crl"



手动发布 CRL



1
2
3
4
5

# 发布新的 CRL
certutil -crl
 
# 查看 CRL 信息
certutil -dump CRL



调整 CRL 发布周期

在 CA 属性 → "扩展" 选项卡中设置 "CRL 发布周期"(默认 1 周)。


11. 续订根 CA 证书

两种续订方式的区别

方式
特点
使用现有密钥对
新证书公钥/私钥不变,旧证书链自动保持有效,最简单
使用新的密钥对
生成新密钥对,旧证书链需重建,适合密钥泄露或合规要求

使用现有密钥对续订(UI)

  1. 1. 打开 证书颁发机构 → 右键 CA 名称 → 所有任务 → 续订 CA 证书
图片
  1. 2. 选择 "否"(不生成新密钥对)
  2. 3. 确认续订后,新证书保存在同一位置,文件名加 (1) 后缀
  3. 4. 企业 CA 自动通过组策略分发到域计算机

使用新密钥对续订(UI)

  1. 1. 同上步骤,但选择 "是"(生成新密钥对)
  2. 2. 续订后 CA 会生成 交叉证书,用于在所有客户端部署新根之前维持信任链
  3. 3. 需手动将新根证书部署到客户端受信任根存储

PowerShell 续订



1
2
3
4
5
6
7

# 续订 CA 证书(使用现有密钥)
Start-CaRenewal -CryptoProviderName "RSA#Microsoft Software Key Storage Provider" `
    -HashAlgorithmName SHA256
 
# 续订 CA 证书(生成新密钥对)
Start-CaRenewal -CryptoProviderName "RSA#Microsoft Software Key Storage Provider" `
    -HashAlgorithmName SHA256 -GenerateKey



续订后必须做的事



1
2

# 强制客户端刷新组策略,获取新根证书
gpupdate /force




12. 迁移证书颁发机构

当需要将 CA 迁移到新服务器时,按照以下流程操作保证业务连续性。

迁移前准备

  1. 1. 备份 CA 数据库和私钥
  2. 2. 备份 CA 注册表设置
  3. 3. 备份 CAPolicy.inf(若自定义)
  4. 4. 记录证书模板列表
  5. 5. 发布有效期延长的 CRL(覆盖迁移窗口期)

备份 CA(3 种方式)

方式 1:服务器管理器 UI

  1. 1. 打开 证书颁发机构 → 右键 CA → 备份 CA
  2. 2. 勾选 "私钥和 CA 证书" 和 "证书数据库和证书数据库日志"
  3. 3. 指定备份路径,设置私钥密码
  4. 4. 备份完成后,停止 CertSvc 服务:net stop certsvc

方式 2:PowerShell



1
2

Backup-CARoleService -Path "D:\CABackup"
Stop-Service -Name "certsvc"



方式 3:Certutil



1
2
3

certutil -backupdb D:\CABackup
certutil -backupkey D:\CABackup
net stop certsvc



从源服务器删除 CA 角色



1
2

# 在服务器管理器中通过 UI 删除,或:
Uninstall-AdcsCertificationAuthority -Force



⚠️ 重要:先完成备份并停止 CertSvc,再删除 CA 角色!

在目标服务器安装 CA



1
2
3
4
5
6
7
8

# 安装 AD CS 角色
Install-WindowsFeature AD-Certificate -IncludeManagementTools
 
# 还原 CA(使用现有密钥)
Restore-CARoleService -Path "D:\CABackup" -DatabasePassword (ConvertTo-SecureString "BackupPassword" -AsPlainText -Force)
 
# 或使用 certutil 还原
certutil -restore <BackupDirectory>



还原 CA 注册表设置



1
2

# 使用 regedit 导入之前导出的注册表文件
regedit /i <BackupDirectory>\CertSvcConfiguration.reg



还原证书模板列表(企业 CA)



1
2
3
4
5

# 记录旧模板列表(迁移前)
certutil -catemplates > catemplates.txt
 
# 在目标 CA 上还原
certutil -setcatemplates + <模板名称1>,<模板名称2>,<模板名称3>



迁移故障转移群集 CA



1
2
3
4
5
6
7

# 在每个群集节点上安装 CA
Install-AdcsCertificationAuthority -CAType "EnterpriseRootCA" `
    -CryptoProviderName "RSA#Microsoft Software Key Storage Provider" `
    -KeyLength 2048 -HashAlgorithmName SHA256
 
# 配置共享存储上的 CA 数据库和日志位置
# 使用故障转移群集管理器将 CertSvc 添加为群集资源




13. 证书信任与链

证书链验证

Windows 通过构建从终端实体证书到根 CA 的链来验证证书有效性:



1

用户证书  →  中间 CA(可选)  →  根 CA(受信任根存储)





1
2
3
4
5
6

# 查看证书链
certutil -verify <证书文件.cer>
certutil -verify -urlfetch <证书文件.cer>
 
# 列出本地受信任根 CA
Get-ChildItem -Path Cert:\LocalMachine\Root



部署受信任根证书

方法 1:组策略自动分发(企业 CA)

企业根 CA 证书会在 CA 安装时自动发布到 AD DS 的 AIA 容器,域计算机会通过组策略自动信任新根 CA。

方法 2:手动导入



1
2

# 导入根证书到本地受信任根存储
Import-Certificate -FilePath "RootCA.cer" -CertStoreLocation Cert:\LocalMachine\Root



方法 3:通过 Web 下载(独立 CA)



1

https://<CA服务器>/certsrv/certcarc.asp



点击 "下载 CA 证书链"

证书链强制下载(解决信任问题)



1
2
3
4
5
6

# 清除缓存的证书链
certutil -urlcache * delete
certutil -setreg chain\ChainCacheResyncFiletime +
 
# 或强制验证并重新获取链
certutil -f -dspublish <证书文件.cer> NTAUTHORITY\RootCA




附录:常用 Certutil 命令速查

用途
命令
查看 CA 信息
certutil -CAinfo
查看 CA 配置
certutil -getconfig
列出已颁发证书
certutil -view -restrict "NotBefore>=2024-01-01" -out "SerialNumber,CommonName"
吊销证书
certutil -revoke <序列号>
发布 CRL
certutil -crl
查看模板列表
certutil -catemplates
备份 CA
certutil -backupdb <目录>
 + certutil -backupkey <目录>
还原 CA
certutil -restore <目录>
导出证书链
certutil -exportPFX <序列号> <输出.pfx>
验证证书链
certutil -verify <证书.cer>
查看 CRL
certutil -CRL


打赏

本文链接:https://kinber.cn/post/6583.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客