无法弄清楚 apache LDAP 身份验证失败的原因

Set*_*thG 8 linux ldap authentication apache-2.2

突然,昨天,我的一台 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/
Run Code Online (Sandbox Code Playgroud)

我想也许我的自签名 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>
Run Code Online (Sandbox Code Playgroud)

dmo*_*ati 9

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

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

我发现并在我的 httpd.conf 中添加了以下选项:

  LDAPVerifyServerCert          off
Run Code Online (Sandbox Code Playgroud)

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


Eri*_*nis 1

您可以从 LDAP 服务器访问日志吗?它们可能有助于解决此问题。