如何在PHP上使用LDAPS连接到Active Directory?

时间:2019-02-05 23:49:43

标签: php active-directory openssl ldap certificate

我想知道如何使用另一Windows服务器上LDAPS中的PHP连接到Active Directory域控制器。 我已经导出了根证书和服务器证书,并将根放在我的受信任的根存储中,而服务器身份验证则放在了Windows证书存储中的个人证书中。 当我尝试使用port 389进行连接时可以,但是当我尝试使用port 636进行连接时,会出现错误。

 // LDAP variables <br>
 $ldap_host = "myhost";   // your ldap servers<br>
 $ldap_port = 636;          // your ldap server's port number<br>
 $base_dn = "OU=Users,OU=domain,DC=example,DC=local";<br>

// Connecting to LDAP<br>
$connect = ldap_connect( $ldap_host, $ldap_port)<br>
or exit(">>Could not connect to LDAP server<<");<br>
echo "Connected to $ldap_host";<br>

ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);<br>
$ldap_user  = "CN=UserName,OU=No Policy,DC=example,DC=local";<br>
$ldap_pass = "Password";<br>
// verify binding<br>
$bind = ldap_bind($connect, $ldap_user, $ldap_pass)<br>
or exit(">>Could not bind to $ldap_host<<" . ldap_error($connnect) );<br>

我得到的输出是“连接到myhost无法绑定到myhost。
使用端口389时,“连接到myhost”

2 个答案:

答案 0 :(得分:0)

docs中所述,您需要使用LDAP-URI通过LDAPS连接。

在您的情况下,将如下所示:

ldap_connect('ldaps://'. $ldap_host. ':'. $ldap_port);

答案 1 :(得分:0)

我能够使用以下方法在PHP上使用ldaps连接到我的服务器。

document.ready

我还必须创建这些文件夹C:\ openldap \ sysconf,然后将名为ldap.conf的文本文档放入其中。
然后,我编辑了ldap.conf并放入了TLS_REQCERT,从不
这适用于通过LDAPS连接。
正确的方法是从此处下载cacert.pem:
https://curl.haxx.se/docs/caextract.html 然后将您的服务器哈希添加到此证书的底部。
最后,编辑ldap.conf以说出TLS_CACERT \ path \ to \ cert \ cacert.pem,并从上方注释掉TLS_REQCERT注释。
然后重新启动apache / nginx / etc,您应该能够使用LDAPS进行连接。