簡體   English   中英

PHP-LDAP搜索偶爾通過TLS / SSL工作

[英]PHP - LDAP search working sporadically over TLS/SSL

下面的代碼對我的LDAP服務器中的所有OrganizationalUnits進行查找,但是它無法像40%的時間那樣執行LDAP搜索。

我僅有的線索是下面的兩個Apache日志條目。 我不是PHP向導,但是假設第二條錯誤消息是由連接失敗引起的,留下了一個空的$sr變量。

我在連接期間運行了tcpdump ,PHP 正在連接到服務器,但是在失敗期間幾乎沒有進行任何通信-與成功連接相比,傳輸的數據包只有大約1/2倍。

這似乎只發生在TLS / SSL(hecnce的putenv最后一搏省力)。 如果我使用純文本格式,則每次搜索都可以完美進行。 是什么導致它“有時”不起作用? 有什么辦法找到更多信息嗎?

更新:我只是注意到此代碼在不使用LDAPS / TLS時100%的時間有效,因此肯定與SSL / TLS相關。

<?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錯誤:

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 (調試失敗信息):

...
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
....

我有同樣的問題。 LDAP服務器需要TLS,因此我們必須使用ldaps連接到服務器。 ldap_connectldap_bind每次都有效。 但是跟隨ldap_search偶爾失敗,並顯示“無法聯系LDAP服務器(-1)”錯誤。

在LDAP方面,我可以在ldap服務器上看到一個有效的綁定請求,但僅此而已-.-

我在php7.2上使用CentOS,有人遇到同樣的問題或解決方案嗎?


好的,我改用http://php.net/manual/en/function.ldap-start-tls.php ,它為我解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM