Active Directory Certificate Services基础设定

本文提供一种相对安全并且合规的根证书和信任链的建立流程。在开始之前,请准备一台air gap电脑(即和其它设备隔离,完全不连接到网络的电脑)和一个Windows Server 2016/2019安装U盘。

目标

  • 创建一个安全的两级CA架构
  • 正确public CRL(这是Hybrid AD join环境内Windows Hello for Business的基本要求)

计划

  • 创建一台离线的Root CA机
  • 创建一台在线的子CA机,用于AD内自动化签发证书
  • 使用HTTP分发CRL

注意事项

Firefox 不支持 PKCS #1 v2.1 证书格式。如果你一定要让证书支持 Firefox,在下面把所有的 AlternateSignatureAlgorithm 设置成0。

流程

申请一个Private OID

如果你还没有OID,那么前往IANA PEN,填表,等一星期,会收到一个数字。比如这个数字是114514,那么你的OID就是1.3.6.1.4.1.114514

Root CA

首先在离线的环境中安装一个Windows Server 2019。基础配置:

  • 激活
  • 修改主机名

然后我们要创建一个%SYSTEMROOT%\CAPolicy.inf文件,必须使用ANSI编码。文件内容如下:

其中Policy相关的根据你自己的需要来确定数量和内容,一般不同安全等级的证书需要有不同的Policy。OID前半段是你申请到的OID,后半段可以自己随意填写。

创建完成后,去安装一个Active Directory Certificate Services的role(只需要Certification Authority这个role以及管理工具)。安装完成以后进入AD CS Configuration向导:

  1. Credentials里输入一个本地管理员的credential
  2. Role Services里面选择Certification Authority
  3. Setup Type选择Standalone CA
  4. CA Type选Root CA
  5. Private Key选择Create a new private key
  6. Cryptography这里随意,建议RSA4096+SHA512;如果不使用硬件安全模块的话,不需要勾选Allow administrator interaction这个选项
  7. CA Name这里,Common name填证书的显示名,别的都可以默认
  8. Validity Period,对于Root CA而言建议选20年以上
  9. Certificate Database可以默认

设置完成后点击开始创建证书即可。创建完成以后需要进行一些设置,打开certsrv.msc:

  1. 展开你的根证书-Revoked Certificates,右键属性,确认Publish Delta CRLs没有勾选

然后打开一个管理员权限的PowerShell,执行以下命令:

打开C:\Windows\system32\certsrv\certenroll\,把里面的证书和CRL文件复制出来。

Enterprise Subordinate CA

这个CA需要安装在域里一台可信的Windows Server上。使用同时为Domain Admin和Enterprise Admin组的用户登录到这台服务器,把证书和CRL拷贝到服务器上,然后执行:

然后同样创建一个C:\Windows\CAPolicy.inf文件,内容要和之前的那些对应:

完成以后同样安装一个Active Directory Certificate Services的role(只需要Certification Authority这个role以及管理工具)。安装完以后配置向导:

  1. Credentials里输入一个Enterprise Admin账户组中账户的credential
  2. Role Services里面选择Certification Authority
  3. Setup Type选择Enterprise CA
  4. CA Type选Subordinate CA
  5. Private Key选择Create a new private key
  6. Cryptography这里随意,建议RSA4096+SHA512;如果不使用硬件安全模块的话,不需要勾选Allow administrator interaction这个选项
  7. CA Name这里,Common name填证书的显示名,别的默认
  8. Certificate Request里面选Save a certificate request to file on the target machine
  9. Validity Period,对于Root CA而言建议选20年以上
  10. Certificate Database可以默认

把刚刚生成的.req文件复制到Root CA那台服务器上,用本地管理员权限的账号登录,打开管理员权限的PowerShell,运行:

在弹出的对话框中选择刚刚创建的Root CA,然后程序会返回一个RequestId数字(以2为例)。接着执行:

来完成证书的签发并取回证书。完事以后,把example.crt复制到Enterprise Subordinate CA服务器上,导入:

现在Root CA服务器可以关机了。同样我们需要设置一下Subordinate CA的CRL:

分发CRL

创建一个SMB共享文件夹用来分发CRL:

对于HTTP分发方式,需要自行设置。

Auto Enrollment

组策略中,Computer Configuration -> Policie -> Windows Settings -> Security Settings -> Public Key Policies -> Certificate Services Client – Auto-Enrollment,启用并勾选Renew和Update两个选项。


参考

Active Directory Certificate Services基础设定》有2个想法

  1. Pingback引用通告: 设置Windows Autopilot和Hybrid AD Join | Drown in Codes

  2. Pingback引用通告: 用Hashicorp Vault作为中级CA | Drown in Codes

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据