我有一个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_connect
,ldap_set_option
(设置LDAPv3),ldap_start_tls
和ldap_bind
的基本序列。
LDAP服务器正在使用内部Active Directory生成的证书颁发机构,因此它不会自动受信任。在/etc/openldap/ldap.conf
,我有:
TLS_REQCERT allow
设置似乎正常。如果我将值更改为always
,ldap_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不起作用?