【问题标题】:Secure LDAP works with PHP CLI but not through apache安全 LDAP 可与 PHP CLI 一起使用,但不能通过 apache
【发布时间】:2014-07-18 09:20:53
【问题描述】:

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

以下代码可从命令行运行(打印“Success”):

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 使用的 apache 使用相同的 php.ini,但问题仍然存在。

【问题讨论】:

  • 您确定 CLI 和 apache 模块使用相同的 LDAP 模块吗?看看两边的 phpinfo() 输出,寻找 ldaps 支持
  • 他们确实使用相同的模块...
  • phpinfo()-output 中,你能在CLI 和apache-module 的Protocols-Section 中找到ldaps 吗?

标签: php apache ldap command-line-interface


【解决方案1】:

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

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

【讨论】:

  • 我尝试了一个小时来弄清楚 - 以为您的回答只是懒惰的管理。原来我也很懒,并尝试了它作为最后的努力,它奏效了!感谢您的回答。
  • 奇怪的是,对我来说是正确的解决方案......原来 macOS 上的“sudo apachectl restart”有效。谢谢!
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-10-24
    • 2013-05-05
    • 2012-07-14
    • 2016-03-13
    • 2011-10-18
    • 2015-08-06
    • 2021-01-15
    • 2013-12-07
    • 1970-01-01
    相关资源
    最近更新 更多