Apache / PHP ldap停止工作。 需要重启apache

我目前有一个设置,用户使用LDAP凭据login网站。 这一切都是内部的,所以我不关心证书。 所以,在我的/etc/openldap/ldap.conf文件中我TLS_REQCERT never 。 在将文件添加到文件之前,我总是收到Error Binding to LDAP: TLS: hostname does not match CN in peer certificate 。 添加后,似乎一切工作正常。 但是现在我发现,经过一段时间,也许几个小时到一天,login将再次失败,我会开始得到这个错误。 如果我重新启动Apache一切正常工作再次一段时间。 然后错误再次popup。 有什么可能导致这种情况继续发生? 该服务器是一个CentOS 6.5。

你必须检查证书的有效性,也许问题与这个bug有关:

当发行者证书过期时,TLS_REQCERT =永远不会被忽略

概要:

问题描述:

当服务器证书有效期之前/之后时,设置TLS_REQCERT=never被忽略。 那一刻,连接失败。

版本 – 所选组件的发布号码(如果适用):

openldap-2.4.23-15.el6
openldap-2.4.24-3.fc15

如何重现:

在slapd中设置证书以允许TLS / SSL。 证书可能无效(无效的发行者,无效的服务器名称等)。

运行: LDAPTLS_REQCERT=never ldapsearch -x -ZZ ...

执行将会成功,TLS将被使用。

更改您的系统时间超出证书的有效期。 再次运行相同的命令。 该命令将在这次失败。


更新:
您已经在OpenLDAP ldap.conf禁用证书检查(也应该适用于php-ldap)。
在ldap_connect之前添加你的PHP代码,把以下内容:

 putenv('LDAPTLS_REQCERT=never'); 

在使用PHP绑定到LDAP服务器时,需要帮助忽略服务器证书

如何解决ldap_start_tls()在PHP中“无法启动TLS:连接错误”?


更新2:

另一个问题可能是apache服务器没有正确地使用ldap.confconfiguration文件,请查看描述问题的链接:

http://php.net/manual/en/function.ldap-connect.php#36156

我希望这有帮助

这是在黑暗中的一个狂野的镜头,所以如果这是错误的,我为你带来错误的方向而道歉。 也许你的ldap服务用完了可用的文件描述符(每个networking连接消耗一个FD)。 在我的LDAP服务器上,我提高了默认限制:

 OVZ-CentOS65[root@ldap1 ~]# more /etc/security/limits.d/ldap.conf @ldap soft nofile 100000 @ldap hard nofile 200000 

尝试添加(或调整当前可能存在的任何文件,控制ldap的用户,组或进程限制),然后重新启动ldap服务。 看看Apache的症状是否持续。