使用 PHP 绑定到 LDAPS 失败

使用 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。

答案1

最终在使用 PHP 7.x 时找到了另一个解决方案。希望这对其他人有所帮助。

感谢 reddit 用户 gripejones: 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 端口,否则无需包含端口。

答案2

更改网址例如,包括用于 SSL 的端口ldaps://localhost:636(假设 636 是 LDAP 服务器侦听安全客户端连接的端口)。

答案3

关注:http://greg.cathell.net/php_ldap_ssl.html

看起来步骤#3、#5-7需要在Windows中完成。

相关内容