按照这个问题,我有一个环境,其中无法颁发基于“Kerberos 身份验证”模板的证书(存在没有与 CA 直接连接的远程站点,证书注册使用 CEP/CES,但 Kerberos 身份验证模板要求 CA 连接回请求 DC;完整的详细信息请参阅链接的问题)。
没有这些证书我们也能活下去...但是当启用自动注册时,所有域控制器都会不断请求它们。
我尝试禁用该模板,但 DC 继续尝试并失败,并显示错误“此 CA 不支持所请求的证书模板”。
我如何告诉 DC 仅请求“域控制器身份验证”证书并停止尝试获取“Kerberos 身份验证”证书?
答案1
这个问题可以有两个输入:
第一部分:模板取代
在证书模板设置 (证书颁发机构), 有被取代的模板选项卡,您可以在其中指定被当前模板取代的模板列表。此设置仅供证书自动注册功能使用。
在自动注册期间,客户端会检查每个模板,并检查当前模板是否列为*取代*在任何其他模板中。如果列出,则跳过当前模板。此行为定义在[MS-CAESO]协议规范,§4.4.5.6.1:
4.4.5.6.1 确定证书模板实例是否适用于自动注册 如果以下列表中的任何条件为真,则自动注册不应为特定证书模板实例处理新的注册
为简洁起见,跳过了 <...>
- 在CertificateEnrollmentPolicy.Templates列表中存在一个CertificateTemplate实例,其CertificateTemplate.SupersededTemplates列表包含一个等于当前CertificateTemplate.CommonName的值
笔记:2014 年,[MS-CAESO] 文档退役,其内容被转移到许多其他协议规范,我还没有尝试跟踪这一举动。鉴于此后没有任何变化,您可以使用该文档的存档 PDF 副本:存档的 [MS-CAESO] PDF 副本。
这回答了问题的前半部分:为什么允许自动注册的模板没有自动注册。因此,检查两个模板是否都没有配置为取代Domain Controller Authentication
模板。如果有,则将其从取代列表中删除。
并检查是否Domain Controller Authentication
已添加到已启用网络注册的 CA 进行颁发。
第 2 部分:MS-XCEP 缓存
当客户端使用证书注册 Web 服务 (Microsoft CEP/CES) 时,他们会执行以下操作:
- 连接到注册策略服务(CEP)并请求策略。
- CEP 对客户端进行身份验证,并从经过身份验证的实体至少具有
Read
权限的 Active Directory 中读取所有证书模板。 - CEP 联系 CA,获取每个 CA 允许的模板列表,并按照以下说明构建响应:[MS-XCEP] §3.1.4.1.3.23
响应消息有nextUpdateHours
:
一个整数,表示服务器建议客户端在提交另一个 GetPolicies 消息之前等待的小时数。
默认值为 8 小时。客户端会缓存此响应,并且在此期间可能不会尝试使用更新后的模板列表请求新策略。虽然有一个布尔policiesNotChanged
字段可供客户端用来轮询更改,但从实践中我可以看出客户端不会执行轮询。相反,他们使用此位来确定是否应替换缓存的策略。这只是我的观点,因为策略中的任何更改都会对客户端产生很大的延迟。
或者,等待至少 8 小时,看看当客户端从 CEP 服务器获取新策略或尝试强制策略检索时问题是否自动解决:
从目标计算机(DC)中删除所有内容%systemdrive%\ProgramData\Microsoft\Windows\X509Enrollment
,然后运行
certutil -pulse
触发自动注册。在此调用期间,将下载新策略,并且自动注册应选择正确的模板。