我目前有一个设置,用户使用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的症状是否持续。