ldap_start_tls从Apache失败但是从PHP shell(phpsh)运行

时间:2013-12-19 19:31:45

标签: php apache ldap

我有一个LAMP应用程序,它使用LDAP绑定(到Active Directory)来验证用户凭据。这适用于运行RHEL 6.2的生产服务器。我正在尝试使用CentOS 6.2和类似版本的软件包在VM中建立我自己的测试环境。

在我的VM上,在Apache内部运行时,对ldap_start_tls的调用失败。我明白了:

PHP Warning:  ldap_start_tls(): Unable to start TLS: Can't contact LDAP server in...

但在同一系统上,我安装了phpsh。如果我使用phpsh来执行PHP代码文件,那就可以了。

代码是ldap_connectldap_set_option(设置LDAPv3),ldap_start_tlsldap_bind的基本序列。

LDAP服务器正在使用内部Active Directory生成的证书颁发机构,因此它不会自动受信任。在/etc/openldap/ldap.conf,我有:

TLS_REQCERT allow

设置似乎正常。如果我将值更改为alwaysldap_start_tls也会在phpsh中失败。这与生产环境中的设置相同。

我尝试通过保存.pem文件(带有2个证书)并将此行添加到/etc/openldap/ldap.conf来安装应该是AD根CA证书的内容:

TLS_CACERT /etc/openldap/certs/ad_roots.pem

我没有看到任何变化,但也许我需要做更多。我并不是百分百肯定那些是合适的证书。

我认为使用phpsh是PHP设置的有效测试,但它作为不同的用户(root)运行,因此环境不同。 SELinux已启用(enforcing),但在audit.log中没有看到任何有关Apache拒绝访问的消息。

为什么这对Apache不起作用?

0 个答案:

没有答案