使用 PHP 綁定到 LDAPS 失敗
感謝一位樂於助人的成員回答了另一個問題,我們終於將我們的伺服器設置為接受 ldap SSL 連接。
我們現在的問題是,當嘗試使用以下簡單的 PHP 腳本綁定到 ldap 時,我們經常失敗。使用 ldap 而不是 ldaps 綁定使用腳本可以正常工作,所以我知道 ldap 已啟用。擷取器是,在使用 LDP.exe 時,我們可以使用安全連接成功連接並綁定到埠 636 上的 ldap。
我們失敗的腳本如下:
<?php $ldap = ldap_connect("ldaps://localhost"); $username="user"; $password="pass"; if($bind = ldap_bind($ldap, $username,$password )) echo "logged in"; else echo "fail"; echo "<br/>done"; ?>
我們還嘗試將使用者名輸入為“user@domain”或“domain/user”,但均未成功。看來我永遠有 LDAP/Cert 問題。我們的環境是 Server 2008。
終於在使用 PHP 7.x 時找到了另一個解決方案。希望這對其他人有幫助。
感謝 reddit 使用者 griejones: https ://www.reddit.com/r/PHPhelp/comments/3tykpc/php_7_and_ldap/
PHP 7 需要將環境變數 (LDAPCONF) 設置為配置文件的位置。過去,您可以將配置文件放在此文件夾 C:\openldap\sysconf\ldap.conf 或 C:\ldap.conf 中。
您不需要複製第 2 步中提到的 dll 文件:http: //greg.cathell.net/php_ldap_ssl.html
確保對 ldap 伺服器的引用格式為 ldaps://servername,並且伺服器名稱與證書中的伺服器名稱相同(如果是 xyzzy.company.com,則需要使用 ldaps:/ /xyzzy.company.com,不要使用ldaps://xyzzy)。
除非您使用非標準 ssl 埠,否則無需包含該埠。
例如,更改URL以包含用於 SSL 的埠
ldaps://localhost:636
(假設 636 是 LDAP 伺服器偵聽安全客戶端連接的埠)。