什么是 Active Directory 证书服务?

Active Directory 证书服务 (AD CS) 是一个 Windows Server 角色,负责颁发和管理在安全通信和身份验证协议中使用的公钥基础结构 (PKI) 证书。

颁发和管理证书

数字证书可用于对电子文档和消息进行加密和数字签名,以及对网络上的计算机、用户或设备帐户进行身份验证。 例如,数字证书用于提供:

  • 通过加密提供机密性。
  • 通过数字签名提供完整性。
  • 通过将证书密钥和计算机、用户或计算机网络上的设备帐户关联来进行身份验证。

主要功能

AD CS 提供以下重要功能:

  • 证书颁发机构:根和从属证书颁发机构 (CA) 用于向用户、计算机和服务颁发证书,并管理证书的有效性。
  • 证书颁发机构 Web 注册:Web 注册使用户能够通过 Web 浏览器连接到 CA,以便申请证书和检索证书吊销列表 (CRL)。
  • 联机响应程序:联机响应程序服务可解码对特定证书的吊销状态申请,评估这些证书的状态,并发送回包含所申请证书状态信息的签名响应。
  • 网络设备注册服务:通过此服务,路由器和其他不具有域帐户的网络设备可以获取证书。
  • TPM 密钥证明:通过它,证书颁发机构可验证私钥是否受基于硬件的 TPM 保护以及 TPM 是否受 CA 信任。 TPM 密钥证明可防止证书导出到未经授权的设备,还可将用户标识绑定到设备。
  • 证书注册策略 Web 服务:通过此服务,用户和计算机能够获取证书注册策略信息。
  • 证书注册 Web 服务:通过此服务,用户和计算机能够通过 Web 服务执行证书注册。 与证书注册策略 Web 服务一起使用时,可在客户端计算机不是域成员或域成员未连接到域时实现基于策略的证书注册。

优点

你可以使用 AD CS,通过将个人、计算机或服务的标识与相应的私钥进行绑定来增强安全性。 AD CS 为你提供了一种对证书的分发和使用进行管理的经济、高效和安全的方法。 除了绑定标识和私钥外,AD CS 还包含可用于管理证书注册和吊销的功能。

可以使用 Active Directory 中的现有终结点标识信息来注册证书,这意味着可以将信息自动插入到证书中。 AD CS 还可用于配置 Active Directory 组策略,以指定允许哪些用户和计算机使用哪些类型的证书。 组策略配置可实现基于角色或基于属性的访问控制。

AD CS 支持的应用领域包括安全/多用途 Internet 邮件扩展 (S/MIME)、安全的无线网络、虚拟专用网络 (VPN)、Internet 协议安全 (IPsec)、加密文件系统 (EFS)、智能卡登录、安全套接字层/传输层安全性 (SSL/TLS) 以及数字签名。

其他

如果要部署NPS(网络策略服务器)也需要安装证书服务器才能正常使用。

AD 系列文章:https://songxwn.com/categories/AD/

AD CS 安装前提

  • 登录操作安装的用户必须是域管理员、企业管理员。所以直接使用administrator 比较好。
  • 配置的服务器必须已经加入进域控。

AD CS 正式安装

1
2
3
4
5
## powershell 管理员执行
Install-WindowsFeature AD-Certificate -IncludeManagementTools
# 安装证书服务
Add-WindowsFeature Adcs-Cert-Authority -IncludeManagementTools
# 安装证书颁发机构功能
1
2
3
## powershell 管理员执行
Install-WindowsFeature ADCS-Web-Enrollment -IncludeManagementTools
# 安装证书Web服务功能

初始化CA证书和Web服务

初始化CA证书,指定加密算法和过期时间

1
2
## powershell 管理员执行
Install-AdcsCertificationAuthority -CAType EnterpriseRootCA -HashAlgorithmName SHA256 -ValidityPeriod Years -ValidityPeriodUnits 99

安装和初始化证书Web服务

1
2
3
4
5
6
7
8
9
## powershell 管理员执行
Install-AdcsWebEnrollment
# 安装角色
New-WebBinding -Name "Default Web Site" -Protocol "https"
# IIS开启https
Get-ChildItem -Path Cert:\LocalMachine\My
# 获取证书指纹,找到和主机名对应的证书,复制前面的指纹。
(Get-WebBinding -Name "Default Web Site" -Port 443 -Protocol "https").AddSslCertificate("7AE5AB7D969B8A37D6436B2FF926D8B0859D6E54", "my")
# IIS绑定证书

Web申请证书

访问 https://localhost/certsrv/Default.asp 进行申请

PS:此界面也可以下载CA根证书进行信任,域控环境下的计算机会自动下发此CA证书。

使用Powershell快速申请cer 格式 Web证书 - 注意域名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## powershell 管理员执行
$inf = @"
[Version]
Signature="\$Windows NT$"
[NewRequest]
Subject = "CN=www.songxwn.com"
KeySpec = 1
KeyLength = 2048
HashAlgorithm = sha256
KeyAlgorithm = RSA
Exportable = TRUE
RequestType = PKCS10
SMIME = FALSE
KeyUsage = 0xa0
[RequestAttributes]
CertificateTemplate = WebServer
"@
cd C:\
mkdir C:\temp
Set-Content -Path "C:\temp\mycert.inf" -Value $inf -Encoding ASCII
certreq -new C:\temp\mycert.inf C:\temp\mycert.req
certreq -submit C:\temp\mycert.req C:\temp\mycert.cer
certreq -accept C:\temp\mycert.cer

为域名songxwn.com 申请证书,执行过程会让你选择证书颁发机构,最终输出证书文件为mycert.cer

生成Nginx可用证书

安装openssl

1
2
## powershell 管理员执行
winget.exe install ShiningLight.OpenSSL.Dev

导出PFX 证书 - 注意域名

1
2
3
4
5
6
7
8
9
## powershell 管理员执行
# 设定常量
$Subject = "\*CN=www.songxwn.com\*" # 用你的域名/CN特征替换
$PfxPath = "C:\temp\www.songxwn.com.pfx" # 用你的域名/CN特征替换
$Password = ConvertTo-SecureString -String "Songxwn.Password123!" -Force -AsPlainText # 导出密码
# 找到指定证书
$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $\_.Subject -like $Subject }
# 导出到PFX
Export-PfxCertificate -Cert $cert -FilePath $PfxPath -Password $Password

使用openssl 转换证书格式 - 注意域名、路径、密码

1
2
3
4
## powershell 管理员执行
cd "C:\Program Files\OpenSSL-Win64\bin"
.\openssl.exe pkcs12 -in C:\temp\www.songxwn.com.pfx -nocerts -nodes -out C:\temp\www.songxwn.com.key -password pass:Songxwn.Password123!
.\openssl.exe pkcs12 -in C:\temp\www.songxwn.com.pfx -clcerts -nokeys -out C:\temp\www.songxwn.com.crt -password pass:Songxwn.Password123!

以下是用于 IIS、Nginx 等主流Web服务器的常见证书格式及其详细说明,包括各自的文件扩展名、内容结构、适用场景以及如何进行格式转换的方法。希望帮助你理解如何选择和准备正确的证书格式。