Php

使用 PHP 綁定到 LDAPS 失敗

  • April 14, 2016

感謝一位樂於助人的成員回答了另一個問題,我們終於將我們的伺服器設置為接受 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 伺服器偵聽安全客戶端連接的埠)。

引用自:https://serverfault.com/questions/445397