ssl - LDAPS Microsoft Active Directory 多个证书 RFC6125

标签 ssl active-directory ldap certificate rfc

我们有一个 Microsoft Active Directory 域,其中包含大量使用 LDAP 设置的域 Controller (DC)。这些都是使用 LDAPS 设置的,并通过模板使用证书服务在主题备用名称 (SAN) 中设置带有域名(即 test.corp)的证书,供 LDAPS 服务器使用。

由于这些是 DC,因此在池中为每个系统设置 DNS,以循环方式响应对 test.corp 的请求。

这些 DC 中的每一个在本地计算机\个人证书存储中都有多个模板和多个证书。

在测试时,使用 nodejs 模块,ldapjs 在使用域名 test.corp 发出 LDAPS 请求时,我们注意到少数服务器失败并显示以下消息:

Error [ERR_TLS_CERT_ALTNAME_INVALID]: Hostname/IP does not match certificate's altnames: Host: test.corp. is not in the cert's altnames: othername:, DNS:.test.corp

在调查过程中,我们发现这些少数 LDAPS 服务器提供的证书不正确。我们通过使用以下命令确定了这一点

openssl s_client -connect .test.corp:636

如果您将输出的证书部分放入一个文件中,然后使用证书管理器或 certutil 等工具读取该文件,您会发现证书不是正确的。 (它没有域“test.corp”SAN)。我们还通过比较序列号验证了这一点

在我们调查的过程中,由于我们的 DC 在本地计算机\个人证书存储中有多个证书,我们发现了以下文章:

https://social.technet.microsoft.com/wiki/contents/articles/2980.ldap-over-ssl-ldaps-certificate.aspx

它建议将证书从本地计算机\个人证书存储到 Active Directory 域服务\个人存储。我们按照概述的步骤进行操作,但发现了相同的结果。

经过进一步调查,建议使用名为 ldp 或 adsiedit 的工具。然后我们继续使用这些工具并欺骗我们从中进行测试的本地机器的主机文件,将域 (test.corp) 指向给我们带来麻烦的 DC 之一的 ip。在重新启动以清除所有缓存后,我们测试了“ldp”和“adsiedit”工具以连接到 test.corp。这些系统没有报告任何错误。

我们发现这很奇怪,然后我们运行 openssl 命令以查看它从同一系统提供什么证书,我们发现它仍然提供不正确的证书。

经过进一步研究,似乎选择 SSL 复选框时的“ldp”和“adsiedit”工具不符合 RFC6125,特别是 B.3

https://www.rfc-editor.org/rfc/rfc6125#appendix-B.3

,它基本上声明证书的身份必须与请求的身份匹配,否则握手将失败。这种身份验证是通过使用证书公用名 (CN) 或 SAN 完成的。

基于此看来工具“ldp”和“adsiedit”不符合 RFC6125 标准。

综上所述,我们需要首先修复少数提供正确证书的域 Controller 。我们乐于接受建议,因为过去几个月我们一直在研究这个问题。其次,有没有办法让相关的 MS 工具符合 RFC6125 标准?

这已移至: https://serverfault.com/questions/939515/ldaps-microsoft-active-directory-multiple-certificates-rfc6125

最佳答案

RFC6125 特别指出它不会取代现有的 RFC。 LDAP 证书处理在 RFC4513 中定义。除此之外,RFC6125 还存在重大缺陷。另见 https://bugzilla.redhat.com/show_bug.cgi?id=1740070#c26

关于ssl - LDAPS Microsoft Active Directory 多个证书 RFC6125,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53240982/

相关文章:

arrays - PostgreSQL 可以对数组元素进行唯一性约束吗?

javascript - 无法从 VUE 向 ESP32 https 服务器发出 POST 请求

c# - TCPListener 上的 SSL

Powershell批量查找ActiveDirectory对象

php - 从 PHP 站点进行 Websphere 单点登录?

c#-4.0 - 查找用户帐户是否在 AD 中启用或禁用

python - django:缓存自定义身份验证的密码

java - 如何检测 Active Directory 用户帐户的重命名或移动操作?

ssl - 为必须使用 TLS 的 Docker 容器管理证书/ key 的最佳方法是什么

php - 我的 PayPal 脚本突然停止验证 SSL 证书