[英]Secure LDAP works with PHP CLI but not through apache
我正在尝试从另一个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,这里还有另一个类似的问题,但是它的答案对我不起作用。 我已经尝试过为cli使用相同的php.ini for apache,但是问题仍然存在。
我们只是发生了这个问题。 原来,我们要做的就是重启Apache。
我不知道是什么原因(我不管理服务器),但是最有可能是安全更新。
我终于能够解决自己的问题,并且想与您分享我的解决方案:
我为LDAP服务器使用了自签名证书,因此有必要创建自己的ca证书并将其导入客户端的证书存储区以建立信任。 当我以root用户身份从cli运行上述脚本时,apache作为www-data运行。 我自制的ca-certifictate的权限设置为400 ,其用户为root ,因此只有root可以读取它。
这可以防止apache上的php(以www-data运行)建立与我的LDAP服务器的连接。 一旦我将ca证书的权限更改为444 ,一切就如魅力一般...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.