2012-01-12 90 views
0

安裝信息:
我有兩個Windows服務器。一個(Windows Server 2008 R2)是具有Active Directory(AD)的域控制器(DC),其名稱爲s1.xyz.com。第二臺(Windows Server 2003 R2)服務器運行IIS,PHP.SSL證書安裝在第二臺服務器上。
無法綁定到與php安全連接的LDAP目錄

我已經安裝了DC服務器上的Active Directory證書服務使用以下鏈接作爲一個證書頒發機構(CA),並啓用LDAP通過SSL(LDAPS):
http://www.christowles.com/2010/11/enable-ldap-over-ssl-ldaps-on-windows.html

有什麼問題:
其實,我想爲AD用戶設置密碼,所以我的要求是安全連接(LDAPS)這樣做。 我可以成功連接到不安全端口(389)上的DC並訪問AD數據,但是 我無法使用PHP ldap_bind()函數在安全連接(端口636上)上綁定用戶。 當我運行腳本時,它給出了「ldap_bind()[function.ldap-bind]:無法綁定到服務器:無法聯繫LDAP服務器」錯誤。

代碼:

$ip="xxx.xxx.xxx.xx"; 

$ldaps_url="ldaps://s1.xyz.com:636/"; 

$ldap_url="s1.xyz.com"; 

$ldapUsername ="[email protected]"; 

$ldapPassword="x1y1z1"; 

$ds=ldap_connect($ldaps_url); 

//$ds=ldap_connect($ip,636); 

ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION,3); 

ldap_set_option($ds, LDAP_OPT_REFERRALS,0); 

$bth=ldap_bind($ds, $ldapUsername, $ldapPassword); 

ldap_unbind($ds); 

$ds=""; 
+0

你確定DC有這個端口打開嗎?如果它響應,請嘗試telnet s1.xyz.com 636。 – rkosegi 2012-01-12 13:39:30

+0

重複http://stackoverflow.com/questions/5258556/problems-with-secure-bind-to-active-directory-using-php? – 2012-01-12 14:00:18

回答

0

也許s1.xyz.com不能得到解決。改用ip代替它。像ldaps://ip.goes.here:636。

+0

IP地址的問題是可能不會爲該IP地址發佈服務器證書(它們通常發佈到主機名)。 – Bruno 2012-01-12 14:33:21

+0

感謝託德Murray.I也試圖連接使用域控制器(DC)服務器的IP地址,但它也失敗。 – sandy 2012-01-13 05:19:16

2

如果您在使用SSL(如LDAPS)和的ldap_bind拋出「無法綁定到服務器:」錯誤,請檢查在ldap_connect使用的主機名相匹配的「CN」 SSL證書中的LDAP服務器。例如:

<? 
    ldap_connect('ldaps://ldap01'); 
    // 'ldap01' should match the CN in your LDAP server's SSL cert, otherwise the subsequent ldap_bind() will throw a bind error 

?> 

您可以使用Microsoft MMC查看您的證書。

+0

Thanks @ JPBlanc.I使用MS MMC查看我的SSL證書,其主題字段值爲「s1.xyz.com」,實際上我想要綁定它。現在我的SSL證書位於證書(本地計算機) - > Personal- > MMC嚮導中的證書文件夾。我有多個證書,我不知道究竟是什麼問題.plz的幫助。 – sandy 2012-01-13 05:36:04