无法弄清楚为什么 apache LDAP 身份验证失败

无法弄清楚为什么 apache LDAP 身份验证失败

昨天,我的一台 Apache 服务器突然无法连接到我的 LDAP (AD) 服务器。我有两个站点在该服务器上运行,当用户登录到任一站点时,这两个站点都使用 LDAP 对我的 AD 服务器进行身份验证。两天前它还运行良好。由于未知原因,截至昨天,它停止了工作。错误日志仅显示以下内容:

auth_ldap authenticate: user foo authentication failed; URI /FrontPage [LDAP: ldap_simple_bind_s() failed][Can't contact LDAP server], referer: http://mysite.com/

我想也许我的自签名 SSL 证书已过期,所以我为 mysite.com 创建了一个新证书,但没有为服务器主机名本身创建,但问题仍然存在。我启用了调试级别日志记录。它显示了与 LDAP 服务器的完整 SSL 事务,并且它似乎毫无错误地完成了,直到最后我收到“无法联系 LDAP 服务器”消息。我可以从此服务器上的命令行运行 ldapsearch,并且可以登录到它,它也使用 LDAP,所以我知道服务器可以连接并查询 LDAP/AD 服务器。只有 apache 无法连接。

谷歌搜索没有找到答案,所以我在这里问。有人能提供关于这个问题的见解吗?

这是 apache 配置中的 LDAP 部分:

<Directory "/web/wiki/">
    Order allow,deny
    Allow from all
    AuthType Basic
    AuthName "Login"
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative off
    #AuthBasicAuthoritative off
    AuthLDAPUrl ldaps://domain.server.ip/dc=full,dc=context,dc=server,dc=name?sAMAccountName?sub
    AuthLDAPBindDN cn=ldapbinduser,cn=Users,dc=full,dc=context,dc=server,dc=name
    AuthLDAPBindPassword password
    require valid-user
</Directory>

答案1

来自 httpd 服务器/LDAP 客户端的数据包跟踪显示了有关 CA 未知的消息。

TLSv1 警报(级别:致命,描述:未知 CA)

我找到并添加了以下选项到我的 httpd.conf 中:

  LDAPVerifyServerCert          off

这解决了我在 CentOS 6 下的问题。CentOS 5 httpd 服务器不需要任何修改,并且可以在没有该选项的情况下一直运行。

答案2

我以前在 Windows 2003 上的 AD 中遇到过类似的问题:我发现的解决方案是不使用完整 DN 进行绑定,而是使用 user@domain 语法:

AuthLDAPBindDN [email protected]

答案3

您是否有权访问 LDAP 服务器的日志?它们可能有助于解决此问题。

答案4

您可能需要检查服务器的时钟。如果时间差超过几分钟,身份验证票将无效。

虽然这不完全是错误消息,但“另一台服务器突然出现同样的问题”部分可能表明存在这样的问题。

相关内容