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

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

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

答案1

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

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)。
在您的 PHP 代码中添加 ldap_connect 之前的内容:

putenv('LDAPTLS_REQCERT=never');

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

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


更新 2:

另一个问题可能是 apache 服务器没有ldap.conf正确获取配置文件,请查看描述该问题的链接:

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

我希望这有帮助

答案2

这是一次盲目的尝试,所以如果它错了,我很抱歉让你误入歧途。也许你的 ldap 服务用完了可用的文件描述符(每个网络连接消耗一个 FD)。在我的 ldap 服务器上,我提高了默认限制:

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

尝试添加此文件(或调整当前可能存在的控制 ldap 用户、组或进程限制的文件)并重新启动 ldap 服务。查看 apache 的症状是否持续存在。

相关内容