我有一个域控制器,它有 Active Directory (AD)。我想在此 AD 上打开 LDAPS,以便我可以通过安全连接访问 AD。我遵循了以下指南:http://social.technet.microsoft.com/wiki/contents/articles/2980.ldap-over-ssl-ldaps-certificate.aspx
我已经完成了“发布支持服务器身份验证的证书”和“导出 LDAPS 证书并导入以用于 AD DS”中的所有操作。当我尝试 netstat 时,我可以看到端口 636 已打开,但其 IP 地址为 0.0.0.0,这应该意味着无法从外部访问它。普通 LDAP 确实有效,我可以连接到它并在 netstat 中看到它对 0.0.0.0 和我的域控制器的 IP 地址都打开,但我无法通过 LDAPS 访问域控制器。
问题是什么?我是否错过了本指南中的某些步骤?我还需要做什么?我已经使用 Active Directory 管理工具测试了 LDAP 和 LDAPS 连接。
这是我从 LDP.EXE 获得的输出:
ld = ldap_sslinit("10.165.0.10", 636, 1);
Error 81 = ldap_set_option(hLdap, LDAP_OPT_PROTOCOL_VERSION, 3);
Error 81 = ldap_connect(hLdap, NULL);
Server error: <empty>
Error <0x51>: Fail to connect to 10.165.0.10.
答案1
问题是我尝试连接时使用了 IP 地址,而证书是为 DNS 名称颁发的。现在它可以正常工作了。
答案2
我们公司花了 2 周时间解决这个问题。我读了 100 多篇关于这个问题的文章。最后发现是证书名称不匹配。我们的应用程序唯一看到的是错误 81。最糟糕的是 LDP.exe 成功通过了身份验证。即使我们的 web 服务也能正确进行身份验证,但我们的应用程序在从 ldap 服务器收到 ACK RST 后会立即出现错误 81。我们使用 Windows 服务器上的主机文件将 IP 与预期的 DNS 进行匹配,然后它就开始工作了。