[英]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.