Mas*_*imo 5 certificate domain-controller certificate-authority ad-certificate-services
我目前正在为网络未完全连接的客户实施企业证书颁发机构;它跨越多个地理站点,其中一些没有到 CA 所在站点的路由。
为了解决这个问题,我使用了Certificate Enrollment Web Service,它允许通过 HTTPS 进行证书注册;该服务通过公共名称和 IP 地址公开,远程站点中的计算机可以通过这种方式访问它。
该解决方案适用于所有类型的证书;但是,远程站点中的域控制器无法使用模板“Kerberos Authentication”(在启用自动注册时最近的 DC 尝试使用)获取证书;该错误是一个通用的“RPC 服务器不可用”,但它发生在 CA 本身,记录在失败的请求中。
这让我困惑了一段时间,直到我决定查看网络流量;瞧,似乎当使用模板“Kerberos Authentication”请求证书时,CA 尝试连接回发出请求的域控制器。这在客户网络中是不可能的,这似乎是请求失败的原因。
我猜 CA 在某种程度上试图验证请求证书的计算机实际上是域控制器;但是,我找不到任何相关文档,而且这样的“回调”似乎与证书请求的客户端/服务器逻辑相反。
这种行为是否记录在任何地方?
可以关掉吗?
CA 上的操作系统是 Windows Server 2019。
AD 林中有四个域;CA 位于林根域中。
所有域中的所有 DC 的行为都相同:每当手动或通过自动注册请求“Kerberos 身份验证”证书时,CA 都会尝试在端口 445 和 139 上联系请求 DC(奇怪的是,有没有实际的 LDAP、Kerberos 或 RPC 流量);当失败时,请求被拒绝,错误“被策略模块拒绝”和状态代码“RPC 服务器不可用”。
这仅适用于“Kerberos 身份验证”证书;所有其他证书都可以通过 CES 成功注册,包括“域控制器身份验证”和“目录电子邮件复制”。
我还针对实际上可以与 CA 通信的 DC 测试了这一点:如果从 DC 到 CA 的流量被阻止,从而迫使请求使用 CES,但不是相反,则请求成功;如果从 CA 到 DC 的流量被阻止,则请求将失败。
根据文档,您面临的行为是预期的,设计使然,无法关闭。Kerberos Authentication需要从 CA 到 DC 的 RPC 连接。您有哪些选择:
Domain Contoller Authentication证书模板而不是Kerberos Authentication模板。Domain Contoller Authentication模板不需要 RPC 连接回 DC。事实上,我不记得所有的细节和对你的赞扬,你做了很好的调查并指出了失败的 RPC 回调,这确实减少了可能的原因。关于为什么会发生这种情况的完整详细信息如下。
首先,关于证书模板:两者Domain Controller Authentication和Kerberos Authentication模板用于在证书/智能卡登录期间提供对LDAP S(LDAP over TLS)和相互认证的支持。
两者之间的区别在于主题的构建方式,或者其中包含的内容。Domain Controller Authentication仅在 SAN 扩展中包含域控制器的 FQDN。Kerberos Authentication添加了另外两个名称:域的 FDQN 和 NetBIOS 名称。此外,Kerberos Authentication增加了一个KDC AuthenticationEKU。默认模板配置在[MS-CRTD] 的附录 A 中定义。更清楚一点:
Domain Controller Authentication 主题名称具有 134217728 (0x8000000) 标志组合,转换为仅标志: CT_FLAG_SUBJECT_ALT_REQUIRE_DNS
Kerberos Authentication主题名称有 138412032 (0x8400000) 标志组合,转换为两个标志:CT_FLAG_SUBJECT_ALT_REQUIRE_DNS和CT_FLAG_SUBJECT_ALT_REQUIRE_DOMAIN_DNS。
主题名称标志存储在msPKI-Certificate-Name-Flag属性中([MS-CRTD] §2.28)。
您问题中的问题是由 SAN 要求包含域 FQDN 和 NetBIOS 名称引起的。Kerberos Authentication模板是唯一使用CT_FLAG_SUBJECT_ALT_REQUIRE_DOMAIN_DNS标志的默认模板。
Windows CA 使用[MS-WCCE]协议规范来处理请求和颁发证书。该协议完全规定了Windows CA 的客户端行为和一小部分交互和行为。[MS-WCCE] §3.2.2.1.3为作为域控制器的客户端定义了一种特殊行为,并通过在其名称前加上“\\”来准备其名称以准备 RPC 连接。
Windows CACT_FLAG_SUBJECT_ALT_REQUIRE_DOMAIN_DNS按照[MS-WCCE] §3.2.2.6.2.1.4.5.9 中的规定处理。
如果
CT_FLAG_SUBJECT_ALT_REQUIRE_DOMAIN_DNS设置了标志,CA 应该:
- 该CA应该用LsarOpenPolicy方法检索的信息政策的手柄([MS-LSAD]节3.1.4.4.2),其中
SystemName的参数集作为dNSHostName从请求者的计算机对象属性,则所有领域ObjectAttributes设定为NULL,与DesiredAccess参数设置为POLICY_VIEW_LOCAL_INFORMATION。- CA SHOULD 使用
LsarQueryInformationPolicy方法([MS-LSAD]第3.1.4.4.4节)获取请求者的计算机DNS域信息,PolicyHandle参数设置为上一步获取的值,InformationClass参数设置为PolicyDnsDomainInformation。- CA 必须将上一步返回的 DNS 域信息中
Name和DNSDomainName字段的值添加到颁发的证书的主题替代名称扩展中。
如您所见,LsarOpenPolicycall 确实是 RPC 调用,并在成功时返回 RPC 连接的句柄。在您的情况下,此调用失败并且 CA 无法调用LsarQueryInformationPolicy(这又是 RPC 调用!)以获得插入证书所需的名称。
可能希望在Kerberos Authentication模板中关闭域 FQDN 和域 NetBIOS 名称,但我不建议这样做。也不尝试将KDC AuthenticationEKU添加到Domain Controller Authentication,因为首先严格依赖域 FQDN 和 NetBIO 的存在,这会导致您的环境出现问题。
| 归档时间: |
|
| 查看次数: |
2556 次 |
| 最近记录: |