首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP - LDAP搜索偶尔在TLS/SSL上工作

PHP - LDAP搜索偶尔在TLS/SSL上工作
EN

Stack Overflow用户
提问于 2018-12-05 14:05:17
回答 1查看 884关注 0票数 0

下面的代码在我的LDAP服务器中执行所有OrganizationalUnits的查找,但是它无法执行LDAP搜索,大约40%的时间。

我得到的唯一线索是下面两个Apache日志条目。我不是一个PHP向导,但假设第二个错误消息是由留下一个空$sr变量的连接失败造成的。

我在连接过程中运行了tcpdump,而PHP正连接到服务器,但是在失败期间通信很少--与成功的连接相比,传输的数据包只占1/2左右。

这似乎只发生在TLS/SSL上(这是putenv最后的努力)。如果我用明文搜索的话,每次都能很好地工作。是什么导致这个“有时”不起作用?有办法查到更多的信息吗?

更新:我刚刚注意到,当不使用LDAPS/时,这段代码是100%工作的,这与SSL/TLS有一定的关系。

代码语言:javascript
运行
复制
<?php
   putenv('TLS_REQCERT=never');
   print "<html><head><title>ldap test</title></head><body>";

   $ldapconn = ldap_connect("ldaps://my.ldap.com") or die("Could not connect to LDAP server.");
   ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);

   if ($ldapconn)
   {
      $basedn = "dc=my,dc=ldap,dc=com";
      $attributes = array("ou","cn");
      $sr = ldap_search ($ldapconn, $basedn, "(ObjectClass=OrganizationalUnit)", $attributes);
      $info = ldap_get_entries($ldapconn, $sr);
   }

   if ($info["count"] > 0)
   {
      for ($i=0; $i < $info["count"]; $i++)
      {
         $ou = $info[$i]["ou"][0];
         print "<br><input type='radio' name='ldap_ou' value='$ou'>$ou<br>";
      }
   }

   print "</body></html>";

?>

Apache错误:

代码语言:javascript
运行
复制
PHP Warning:  ldap_search(): Search: Can't contact LDAP server in /var/www/test.php on line 14
PHP Warning:  ldap_get_entries() expects parameter 2 to be resource, boolean given in /var/www/test.php on line 15

更新2 (调试失败信息):

代码语言:javascript
运行
复制
...
ldap_prepare_socket: 18
ldap_connect_to_host: Trying 10.14.13.92:636
ldap_pvt_connect: fd: 18 tm: -1 async: 0
TLS: peer cert untrusted or revoked (0x42)
TLS: can't connect: (unknown error code).
ldap_err2string
....
EN

回答 1

Stack Overflow用户

发布于 2018-12-21 08:32:58

我也有同样的问题。LDAP服务器需要TLS,所以我们必须使用ldaps连接到服务器。ldap_connectldap_bind每次都工作。但是,在之后,ldap_search偶尔会失败,与无法联系的LDAP服务器(-1)错误。

在LDAP方面,我可以在我的ldap服务器上看到一个工作的绑定请求,但仅此而已--

我使用的CentOS与php7.2,谁有同样的问题或任何解决方案?

好的,我改用http://php.net/manual/en/function.ldap-start-tls.php解决了这个问题。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53634150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档