安全LDAP适用于PHP CLI,但不适用于apache

时间:2014-07-18 09:20:54

标签: php apache ldap command-line-interface

我正在尝试通过另一个Debian框对我的Debian服务器进行安全LDAP身份验证。

以下代码适用于命令行(打印"成功"):

if($ldap = ldap_connect('ldaps://myserver.tld'))
{
  ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
  $bind = ldap_bind($ldap,'cn=admin,dc=myserver,dc=tld','mypassword');
  print ldap_error($ldap);
}

...通过Apache / mod_php打印相同的文件"无法联系LDAP服务器"

在stackoverflow上还有另一个类似的问题,但它的答案对我不起作用。我已经尝试使用相同的php.ini用于cli的apache,但问题保持不变。

2 个答案:

答案 0 :(得分:2)

我们刚刚遇到这个问题。事实证明,我们所要做的就是重启Apache。

我不知道原因是什么(我不管理服务器),但很可能是安全更新。

答案 1 :(得分:0)

我终于能够解决自己的问题了,我确实希望与您分享我的解决方案:

我正在为我的LDAP服务器使用自签名证书,因此有必要创建我自己的ca证书并将其导入客户端的证书存储区以建立信任。 当我以 root 用户从cli运行上述脚本时,apache以 www-data 运行。 我的自制ca-certifictate的权限设置为 400 ,其用户设置为 root ,因此只有root才能读取它。

这阻止了apache(作为www-data运行)上的php建立到我的LDAP服务器的连接。一旦我将ca-certificate的权限更改为 444 ,一切都像魅力一样......