【问题标题】:PHP on IIS - unable to bind to Active Directory over LDAPSIIS 上的 PHP - 无法通过 LDAPS 绑定到 Active Directory
【发布时间】:2014-03-04 16:04:11
【问题描述】:

我正在为我们的用户编写一个小型密码重置脚本,在 IIS7.5 服务器上使用 PHP5。我在我们的 Active Directory 控制器上启用了基于 SSL 的 LDAP,并使用 ldp.exe 测试它是否正常工作

这是连接服务器的代码:

$ldap_server = "ldaps://AD02.district.local";
$ldap_port = "636";
$ldap_user = "service_lookup@district.local";
$ldap_pass = "(goes here)";

$ds = ldap_connect($ldap_server,$ldap_port);
ldap_bind($ds,$ldap_user,$ldap_pass); 
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);

但是,当我执行脚本时,出现以下错误:

警告:ldap_bind() [function.ldap-bind]:无法绑定到服务器: 无法联系第 11 行 D:\Sites\Lookup\search.php 中的 LDAP 服务器

如果我将 $ldap_server 设置为使用 ldap:// 而不是 ldaps://,它会连接(即使端口设置为 636),但实际的重置功能不起作用(“服务器不愿意执行")。

有没有办法进一步解决这个问题?或者有谁知道可能出了什么问题?dd

【问题讨论】:

  • 检查两件事:如果在php.ini中启用了ldap;其次确保启用ldaps,也许只是启用常规ldap,在这种情况下端口不同
  • php_ldap.dll 在我的 php.ini 文件中启用,当通过非 SSL LDAP 连接时,我能够连接到 AD 服务器并执行搜索。我的 AD 服务器上启用了基于 SSL 的 LDAP,我可以验证它是否正常工作,因为我可以通过 SSL 从其他工具连接到它。我需要在我的 php.ini 文件中配置什么来启用 LDAP over SSL?
  • 除了在 php.ini 中启用 php_openssl.dll 之外,php.ini 中没有任何内容可以通过 SSL 启用 LDAP。还有一件事是您的 AD 中也启用了 LDAP 连接?
  • php_openssl.dll 也已启用。我们的 AD 上启用了 LDAP 连接,因为我们有几个其他应用程序通过 LDAP/LDAPS 连接到 AD。最值得注意的是我们的 SSO 系统,它使用 LDAPS,但使用的是 Java 而不是 PHP。
  • 这很奇怪。我建议回显ldap_error 我认为问题不在于连接到LDAP,问题可能在于ldap_bind。我想您需要在绑定查询中包含 base dn 才能解决此问题

标签: php iis active-directory ldap


【解决方案1】:

我知道这是一个老问题。但是今天我遇到了同样的问题。

我必须应用以下解决方案才能使其发挥作用:

  1. 创建文件夹:C:\OpenLDAP\sysconf
  2. 在 C:\OpenLDAP\sysconf 中创建文件“ldap.conf”。
  3. 制作文件内容:'TLS_REQCERT never'(无引号)。
  4. 保存。

它现在应该可以工作了。根据手册,“TLS_REQCERT never”会阻止服务器请求和/或检查任何服务器证书。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 2016-05-05
    • 2017-10-24
    • 1970-01-01
    相关资源
    最近更新 更多