什么是 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