AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1005993
Accepted
Massimo
Massimo
Asked: 2020-03-08 05:57:20 +0800 CST2020-03-08 05:57:20 +0800 CST 2020-03-08 05:57:20 +0800 CST

在稀疏网络中注册“Kerberos 身份验证”证书时出错

  • 772

我目前正在为网络未完全连接的客户实施企业证书颁发机构;它跨越多个地理站点,其中一些没有路由到 CA 所在的站点。

为了解决这个问题,我使用了Certificate Enrollment Web Service,它允许通过 HTTPS 进行证书注册;该服务通过公共名称和 IP 地址公开,远程站点中的计算机可以通过这种方式访问​​它。

该解决方案适用于各种证书;但是,远程站点中的域控制器无法使用“Kerberos 身份验证”模板(最近的 DC 在启用自动注册时尝试使用该模板)获取证书;该错误是通用的“RPC 服务器不可用”,但它发生在 CA 本身,并记录了失败的请求。

这让我困惑了一会儿,直到我决定查看网络流量;你瞧,似乎当使用模板“Kerberos 身份验证”请求证书时,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 的流量被阻止,则请求失败。

domain-controller certificate certificate-authority ad-certificate-services
  • 2 2 个回答
  • 7780 Views

2 个回答

  • Voted
  1. Best Answer
    Crypt32
    2020-03-08T11:46:20+08:002020-03-08T11:46:20+08:00

    根据文档,您所面临的行为是预期的,是设计的,无法关闭。Kerberos Authentication需要从 CA 到 DC 的 RPC 连接。您有哪些选择:

    1. 启用 CA 和域控制器之间的 RPC 通信。
    2. 使用Domain Contoller Authentication证书模板而不是Kerberos Authentication模板。Domain Contoller Authentication模板不需要 RPC 连接回 DC。

    事实上,我不记得所有的细节和对你的赞美,你做了很好的调查并指出了一个失败的 RPC 回调,这确实减少了可能的原因。关于为什么会发生这种情况的完整详细信息如下。


    TL;博士

    第1部分

    首先,关于证书模板:两者,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 Authenticationtemplate 是唯一使用CT_FLAG_SUBJECT_ALT_REQUIRE_DOMAIN_DNS标志的默认模板。

    第2部分

    Windows CA 使用[MS-WCCE]协议规范来处理请求和颁发证书。该协议完整地规定了 Windows CA 的客户端行为和一小部分交互和行为。[MS-WCCE] §3.2.2.1.3为作为域控制器的客户端定义了一种特殊行为,并通过在其名称前加上“\\”来准备其名称以准备 RPC 连接。

    第 3 部分

    Windows CA 按照 [MS-WCCE] §3.2.2.6.2.1.4.5.9 中的CT_FLAG_SUBJECT_ALT_REQUIRE_DOMAIN_DNS规定处理。

    如果CT_FLAG_SUBJECT_ALT_REQUIRE_DOMAIN_DNS设置了标志,CA 应该:

    • CA 应该使用 LsarOpenPolicy 方法([MS-LSAD] 第 3.1.4.4.2 节)检索信息策略的句柄,SystemName参数设置为来自请求者计算机对象的属性,设置为的dNSHostName所有字段,以及参数设置为。ObjectAttributesNULLDesiredAccessPOLICY_VIEW_LOCAL_INFORMATION
    • CA 应该使用LsarQueryInformationPolicy方法([MS-LSAD] section 3.1.4.4.4)获取请求者的计算机DNS域信息,PolicyHandle参数设置为上一步获得的值,InformationClass参数设置为PolicyDnsDomainInformation。
    • CA 必须将上一步返回的 DNS 域信息中的Nameand字段的值添加到已颁发证书的主题备用名称扩展中。DNSDomainName

    如您所见,LsarOpenPolicycall 确实是 RPC 调用,并在成功时返回 RPC 连接句柄。在您的情况下,此调用失败并且 CA 无法调用LsarQueryInformationPolicy(这又是 RPC 调用!)以获取插入证书所需的名称。

    底线

    可能希望在模板中关闭域 FQDN 和域 NetBIOS 名称Kerberos Authentication,但我不建议这样做。也不尝试将KDC AuthenticationEKU 添加到Domain Controller Authentication,因为首先严格依赖于域 FQDN 和 NetBIO 的存在,这会导致您的环境出现问题。

    • 5
  2. CryptoDan
    2020-03-12T14:13:34+08:002020-03-12T14:13:34+08:00

    为了绕过 RPC 回调到您的 DC,您可以复制 Kerberos 模板并手动添加 SAN。然后启用自动更新。

    以下是步骤-

    配置模板:

    1. 复制 kerberos 模板

    2. 将新模板主题名称配置为“在请求中提供”

    3. 授予您的 DC 对新模板的读取和注册权限
    4. 如果需要,您可以取代旧模板
    5. 发布模板

    在您的 WES 上:

    iisreset 刷新模板列表

    注册证书:

    在您的隔离 DC 上注册证书并在 SAN 扩展中添加域名(这不会使 RPC 回调从 CA 到 DC)。

    (如果您看不到模板,请清除 C:\ProgramData\Microsoft\Windows\X509Enrollment 处的本地 WES 缓存)

    启用自动续订(通过 GPO):

    Windows 设置 > 安全设置 > 公钥策略 > 证书服务客户端 - 自动注册。仅标记“更新过期证书、更新待处理证书和删除已撤销证书”就足够了

    测试自动更新:

    在新模板上 - 右键单击​​并选择“重新注册所有证书持有者”。这将增加模板的主要版本,并在下一个自动注册周期(8 小时一次)强制更新证书。

    如果您不想等待 - 然后 iisreset WES,删除本地 x509enrollment 文件夹并运行“certutil -pulse”

    祝你好运

    • 1

相关问题

  • 更换2000域控制器

  • 服务器核心上的 DCPromo - 密码复杂性

  • 如何创建专用林根域?

  • 如何让 WindowsXp 机器使用特定的域控制器作为登录服务器?

  • 在同一台机器上将域控制器作为 1 个 VM 和一个 RODC 作为另一个 VM 运行,它会工作吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve