我想节省操作系统许可证、简化 CRL 更新并在给定服务器上拥有多个证书实例。
对我来说,从安全角度来看这是有意义的,因为我有:
一个充当根的 CA,需要发布和更新策略服务器的 CRL(下一个要点)
有许多策略服务器(第二层)受到名称约束或 EKU 用法的约束。同样,这些服务器也需要发布许多 CRL 和 AIA 记录。
我们目前估计需要 10,000 到 50,000 台策略服务器。每台策略服务器都将在 Azure blob 存储中存储一个 CRL,并且每台服务器都有一个专用容器以实现 IO 可扩展性。
根据 certutil -ping 的输出(即 config 参数),似乎每个 ADCS 实例可以有多个配置。
此外,Certutil 的其他几个参数(以及相应的 API)允许我指定要连接到哪个“实例”。
/// --- NOTE: The ability to specify an individual config seems to indicate multiple PKIs are possible per box:
PS C:\Windows\system32\CertSrv\en-US> certutil -ping -config "a.Issue01.bitclear.us\Secure Issuer 01a-001"
Connecting to a.Issue01.bitclear.us\Secure Issuer 01a-001 ...
Server "Secure Issuer 01a-001" ICertRequest2 interface is alive (0ms)
CertUtil: -ping command completed successfully.
/// --- NOTE "Entry 0" implies that more entries are possible
PS C:\Windows\system32\CertSrv\en-US> certutil -v
Entry 0: (Local)
Name: `Secure Issuer 01a-001'
Organizational Unit: `Email Privacy'
Organization: `Bitclear LLC'
Locality: `'
State: `'
Country/region: `us'
Config: `a.Issue01.bitclear.us\Secure Issuer 01a-001'
Exchange Certificate: `'
Signature Certificate: `a.Issue01.bitclear.us_Secure Issuer 01a-001.crt'
Description: `'
Server: `a.Issue01.bitclear.us'
Authority: `Secure Issuer 01a-001'
Sanitized Name: `Secure Issuer 01a-001'
Short Name: `Secure Issuer 01a-001'
Sanitized Short Name: `Secure Issuer 01a-001'
Flags: `13'
Web Enrollment Servers:
1
4
0
https://a.issue01.bitclear.us/Secure%20Issuer%2001a-001_CES_UsernamePassword/service.svc/CES
0
CertUtil: -dump command completed successfully.
每个 ADCS 主机是否可以托管多个 PKI?如何实现?
另外:我记得过去曾讨论过这种可能性,但我不确定是否已经实施。
去做:
当我使用自定义 CertFile 和新名称测试此理论时运行命令:
certutil -installcert [-f] [-gmt] [-seconds] [-v] [-config CAMachineName\CAName] [CACertFile]
这可能也与“PolicyServers”和“EnrollmentServers”可以使用此命令连接。将这些与核心 ADCS 实例分离的能力非常有趣,并且记录得非常清楚。
答案1
我的理解是,每个主机只能有一个 ADCS 实例,AD 林中最多可以有 3 个 CA。“\CA 名称”更多是关于 PKI 树的名称,不应与 MSSQL 配置中看到的 \INST1 类型实例混淆,我认为您可能正在考虑后者。
将 CA 分开保存是个好习惯,因为如果所有 CA 都在一台主机上,那么如果该主机受到威胁,则该主机上的所有 CA 都会受到威胁。
如果您的林中有多棵 PKI 树,您将会看到来自 certutil 的多个条目。
可以使用 Web 策略注册服务器分离注册策略服务器 - 这对于需要在外部颁发证书的 DMZ 环境很有用。
答案2
从技术上讲,一台服务器上不可能有多个 PKI 层次结构,而且从安全角度来看,这是一个坏主意,正如前面提到的那样(单点故障)。ADCS 角色与 AD 中的服务器身份相关联,因此更改层次结构的 DN 的唯一方法是删除该角色并重新开始。
就许可证而言,我认为离线根 CA 不需要任何特殊功能。从技术上讲,只要 CRL 和 AIA 端点匹配,您就可以在 Linux 主机上生成密钥材料,并将其从企业颁发 CA 发布到 AD 中。