AD系列:Windows Server 2025 安装AD CS角色和颁发证书
什么是 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 正式安装
## powershell 管理员执行Install-WindowsFeature AD-Certificate -IncludeManagementTools # 安装证书服务Add-WindowsFeature Adcs-Cert-Authority -IncludeManagementTools# 安装证书颁发机构功能
## powershell 管理员执行Install-WindowsFeature ADCS-Web-Enrollment -IncludeManagementTools# 安装证书Web服务功能
初始化CA证书和Web服务
初始化CA证书,指定加密算法和过期时间
## powershell 管理员执行Install-AdcsCertificationAuthority -CAType EnterpriseRootCA -HashAlgorithmName SHA256 -ValidityPeriod Years -ValidityPeriodUnits 99
安装和初始化证书Web服务
## powershell 管理员执行Install-AdcsWebEnrollment# 安装角色New-WebBinding -Name "Default Web Site" -Protocol "https"# IIS开启httpsGet-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证书 - 注意域名
## 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:\tempSet-Content -Path "C:\temp\mycert.inf" -Value $inf -Encoding ASCIIcertreq -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
## powershell 管理员执行winget.exe install ShiningLight.OpenSSL.Dev
导出PFX 证书 - 注意域名
## 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 转换证书格式 - 注意域名、路径、密码
## 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服务器的常见证书格式及其详细说明,包括各自的文件扩展名、内容结构、适用场景以及如何进行格式转换的方法。希望帮助你理解如何选择和准备正确的证书格式。
证书格式介绍
主要SSL证书文件格式
1. PEM格式(常见于Linux、Nginx、Apache等)
- 扩展名:
.pem
/.crt
/.cer
/.key
- 编码:Base64,ASCII文本
- 内容:头尾分别有
-----BEGIN CERTIFICATE-----
/-----END CERTIFICATE-----
- 包含内容:
- 证书(公钥):
-----BEGIN CERTIFICATE-----
- 私钥:
-----BEGIN PRIVATE KEY-----
或-----BEGIN RSA PRIVATE KEY-----
- 证书(公钥):
常见用法:
- Nginx、Apache、Tomcat、HAProxy 等服务器,分别要求证书文件和私钥文件。
示例:
-----BEGIN CERTIFICATE-----
MIIRDzCCAiagAwIBAgIQHxQp...
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqh...
-----END PRIVATE KEY-----
2. DER格式(常见于Java、Windows)
- 扩展名:
.der
/.cer
- 编码:二进制
- 内容:仅证书,不包含私钥
- 应用:主要用于Java平台(如Tomcat keystore/JKS导入),或有的Windows/IIS。
用法补充:
- DER格式常作为证书数量较多或须用二进制格式时使用。
3. PFX/P12格式(IIS/Windows,部分Linux也支持)
- 全称:PKCS#12
- 扩展名:
.pfx
/.p12
- 内容:证书(公钥)+ 私钥 + 可选CA根证书,全部打包在一个文件中,并用密码保护
- 编码:二进制
- 典型应用:IIS、Windows Server、Azure、IIS Express、某些支持SSL的Windows应用。
注意事项:
- 导入PFX时须输入密码(PFX/P12导出时必须指定密码)。
4. P7B/P7C格式(仅含证书,不含私钥)
- 全称:PKCS#7
- 扩展名:
.p7b
/.p7c
- 内容:只含公钥证书签名链,不包含私钥
- 编码:ASCII(Base64)或二进制
- 应用场景:CA连带证书链传递,IIS、Java等平台的证书链导入
IIS和Nginx的证书格式要求及部署说明
(1)IIS
- 推荐格式:
.pfx
(PKCS#12,含私钥) - 支持格式:导入向导也支持
.cer
/.crt
,但必须提前在Windows证书管理器导入私钥 - 部署说明:
- 在证书向导中引入PFX文件,输入私钥导出密码即可全部配置。
- 如仅有
.cer
/.crt则需用“证书管理器—导入”方式。
如何转换为PFX格式:
# 合并已有证书文件和私钥生成pfx
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -certfile chain.crt
(2)Nginx
- 推荐格式:PEM格式(明文Base64)
server.crt
:服务器公钥证书server.key
:服务器私钥- 可选
fullchain.crt
:已拼接的主证书+CA证书链
- 部署说明:
ssl_certificate
(指定公钥或fullchain)ssl_certificate_key
(指定私钥)
示例Nginx配置片段:
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
# 若有CA证书链,建议如下配置
# 或将链直接拼接写入server.crt
拼接证书链方法(主证书在前,链一路向下拼接):
cat server.crt intermediate.crt root.crt > fullchain.crt
不同格式之间的转换方法
-
PEM转PFX
openssl pkcs12 -export -out server.pfx \-inkey server.key -in server.crt -certfile ca_bundle.crt
-
PFX转PEM
openssl pkcs12 -in server.pfx -out server.pem -nodes # 生成带有证书和私钥的pem,自己分离出来
-
PEM转DER
openssl x509 -in server.crt -outform der -out server.der
-
DER转PEM
openssl x509 -in server.der -inform der -out server.crt
-
P7B转PEM
openssl pkcs7 -print_certs -in server.p7b -out server.crt
总结表格
文件格式 | 扩展名 | 包含内容 | PEM/DER编码 | 场景 | 服务器举例 (主要支持) |
---|---|---|---|---|---|
PEM | .crt/.pem/.key/.cer | 公钥、私钥 | PEM (Base64) | Nginx/Apache等 | Nginx、Apache、Tomcat等 |
DER | .der/.cer | 仅证书 | DER (二进制) | Java/IIS/Win | Java Keystore、部分Windows/IIS |
PFX/P12 | .pfx/.p12 | 公钥+私钥+CA链 | DER(二进制) | IIS/Windows | IIS、Azure、Windows |
P7B/P7C | .p7b/.p7c | 仅公钥证书链 | PEM/DER | 证书链传递 | IIS、Java |
微软官方文档
https://learn.microsoft.com/en-us/windows-server/networking/core-network-guide/cncg/server-certs/install-the-certification-authority