我们的脚本在尝试使用SSL绑定到LDAP(活动目录)时会继续失败,我很难过。 我们可以使用不安全的方法成功连接,但是我们正试图执行需要SSL的密码更改。 我们的脚本片段如下:
config.php文件
// SSL $LDAPDOMAIN="dc=campus,dc=local"; $LDAPLOCALDOMAIN="campus.local"; $LDAPHOST='ldaps://localhost'; $LDAPPORT=636; $ldap = ldap_connect($LDAPHOST, $LDAPPORT) or die ('<p class="message">Error connecting'); ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
reset.php(使用config.php)
if ($ldap) { $bind = @ldap_bind($ldap,$username."@".$LDAPLOCALDOMAIN,$password); if (!($bind)) { @ldap_close($ldap); die ('<p class="message">Your password is incorrect, please try again <a href=javascript:history.back()>click here</a><br>'); }
无论我们做什么,剧本都会在reset.php中“死亡”。 当我们使用正规的LDAP时,我们至less可以沟通。 我们的config.php代码如下:
$ldap = ldap_connect($LDAPHOST) or die ('<p class="message">Error connecting to LDAP');
感谢您的帮助,并感谢您提前。
*更新
我试着运行下面的简单程序来testing我的LDAP。 SSL仍然无法正常工作,但是普通的LDAP却不行。 这是一个configuration问题? 我的证书应该没问题,我创build了一个新的,并注册了我的服务器。 我使用了一个绑定和连接的LDAP实用程序。 只是不是PHP。
<?php $ldap = ldap_connect("ldaps://localhost/"); $username="[email protected]"; $password="password"; if($bind = ldap_bind($ldap, $username,$password )) echo "logged in"; else echo "fail"; echo "<br/>done"; ?>
我的结果是失败。
你可以尝试运行ldapsearch并给我们错误输出? 它看起来像这样:
ldapsearch -x -d 1 -LLL -H ldaps://localhost -b 'dc=campus,dc=local' -D 'username' -W '(sAMAccountName=username)'
参数是:
ldapsearch要求input密码 如果您使用SASL通过LDAPS连接到Active Directory服务器,则需要将“ maxssf ”参数设置为零。 我不太确定PHP的LDAP函数是如何工作的,所以如果你能弄清楚如何设置这个参数,可能是值得的。
谢谢大家的帮助。 经过进一步的研究,我终于弄清楚了究竟发生了什么。 我知道现在或未来我不会是唯一遇到这个问题的人。 所以请按照这些网站上列出的指示,你将是金。
从第一个链接下载configuration文件,然后按照第二个链接上的说明。
http://jaredjennings.org/index.php5/Enabling_LDAP_SSL_in_PHP
http://www.apple-scripts.com/Downloads/Enable%20LDAPS%20on%20Windows%20IIS.pdf
Windows服务器环境有时候会很笨拙。