猿问

PHP LDAPS 连接到 AD

使用 PHP 7.4 通过 SSL 连接到 Windows AD


$ldaphost = "ldaps://...";

$ldapUsername  = "CN=supervisor,OU=test_Users,DC=test,DC=org";

$ldapPassword = "xxxx";



$ds = ldap_connect($ldaphost,636);

echo $ds;


if (!ldap_start_tls($ds)) {

print "Could not start secure TLS connection";

}else {

// now we need to bind to the ldap server

$bth = ldap_bind($ds, $ldapUsername, $ldapPassword) or die("\r\nCould not connect to LDAP server\r\n");

}

错误:ldap_start_tls():无法启动 TLS:无法联系 LDAP 服务器


调试后 :ldap_connect 按预期返回 id 进程。我尝试使用 GUI 工具连接并且连接成功,这意味着我消除了证书问题。我感谢任何解决此问题的想法谢谢


森栏
浏览 344回答 2
2回答

墨色风雨

您应该使用TLSldaps 或TLS。到目前为止,首选方式是根据 LDAPv3 的 TLS。因此,您将使用连接到不安全的后端ldap://,然后ldap_start_tls作为第一个命令调用(可能在一些ldap_set_option-calls 之后),但绝对是在调用ldap_bind.您的问题可能是,与 LDAP-Server 的连接根本无法从有问题的机器上工作。由于ldap_connect实际上并没有连接,而只是创建了一个可用于进行实际连接的句柄,因此连接错误通常在第一次需要实际连接的调用时出现(在您的情况下ldap_start_tls)。因此,请检查您的服务器是否可以从相关机器的给定端口上访问,例如通过调用telnet servernameOrIp port或使用 cli-ldap-tool另一件事是,您使用ldap_connect错误。您应该像这样将端口添加到 ldap-uri:如docsldaps://example.com:636中指定的那样。如果您使用 LDAP-URL,则会忽略端口参数。

繁星coding

如果您ldap_start_tls已经指定了ldaps://. 继续你的ldap_bind.只有当您的 DC 在普通 LDAP 端口 389 上支持 TLS 时,您才真正需要使用ldap_start_tls。在这种情况下,您需要明确指定要使用 TLS,因为您实际上可以选择。您在端口 636 上没有选择。在ldap_start_tls.另请参阅ldap_connect.
随时随地看视频慕课网APP
我要回答