0

インストール情報:
2台のWindowsサーバーがあります。1つ(Windows Server 2008 R2)は、Active Directory(AD)を備えたドメインコントローラー(DC)です。その名前はs1.xyz.comです。2番目の(Windows Server 2003 R2)サーバーはIISを実行しており、PHP.SSL証明書が2番目のサーバーにインストールされています。

DCサーバーにActiveDirectory証明書サービスをインストールして認証局(CA)として機能し、次のリンクを使用してLDAP over 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 ="Administrator@xyz.com";

$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="";
4

2 に答える 2

2

SSL (例: ldaps) を使用していて、ldap_bind が「サーバーにバインドできません:」エラーをスローする場合は、ldap_connect で使用されているホスト名が LDAP サーバーの SSL 証明書の「CN」と一致することを確認してください。例えば:

<?
    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 を使用して証明書を確認できます。

于 2012-01-12T17:16:50.300 に答える
0

たぶんs1.xyz.comは解決できません。代わりにIPで試してください。ldaps://ip.goes.here:636のように。

于 2012-01-12T13:53:19.333 に答える