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

Lon*_*fPR 5 php openldap apache-2.2 centos6.5

我当前的设置是用户使用 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。

Fed*_*rra 1

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

\n\n

TLS_REQCERT=颁发者证书过期时不会被忽略

\n\n

概括:

\n\n
\n

问题描述:

\n\n

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

\n\n

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

\n\n

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

\n\n

重现性如何:

\n\n

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

\n\n

跑步: LDAPTLS_REQCERT=never ldapsearch -x -ZZ ...

\n\n

执行将成功,将使用 TLS。

\n\n

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

\n
\n\n
\n\n

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

\n\n
putenv(\'LDAPTLS_REQCERT=never\');\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

如何解决 PHP 中的 ldap_start_tls() \xe2\x80\x9cUnable to start TLS: Connect error\xe2\x80\x9d 问题?

\n\n
\n\n

更新2:

\n\n

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

\n\n

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

\n\n

我希望这有帮助

\n