Предупреждение: ldap_start_tls () [function.ldap-start-tls]: невозможно запустить TLS: сервер недоступен - PullRequest
2 голосов
/ 12 декабря 2011

Предупреждение: ldap_start_tls () [function.ldap-start-tls]: невозможно запустить TLS: сервер недоступен в /var/www/html/testldap/index.php в строке 13 Ошибка Ldap_start_tls

Моя конфигурация следующая

Centos 5.7 PHP версии 5.3.3

php53-ldap настроен. Неважно, что я пытаюсь сделать, проблема с starttls вызывает у меня головную боль. Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 12 декабря 2011

Ну, какое забавное путешествие я прошел с этим.

Проблема, с которой вы столкнулись, заключается в том, что ваш компьютер не принимает сертификат сервера как действительный. Простой способ обойти это - отключить проверку, которая выполняется в файле ldap.conf или с помощью переменной среды.

Вы можете отредактировать файл в /etc/openldap/ldap.conf (c:\openldap\sysconf\ldap.conf в Windows) или создать его, если он еще не существует, и вставить в него следующую строку:

TLS_REQCERT never

... или вы можете создать переменную среды с именем LDAPTLS_REQCERT со значением never.

Как только я сделал одну из этих вещей, у меня сработал следующий сценарий:

<?php

  // Settings
  $host = 'server.domain.local';
  $port = 389;
  $user = 'administrator';
  $pass = 'password';

  // Connect, set options and bind
  $ds = ldap_connect($host, $port);
  if (!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) exit('Could not disable referrals');
  if (!ldap_set_option($ds, LDAP_OPT_REFERRALS, 0)) exit('Could not disable referrals');
  if (!ldap_start_tls($ds)) exit('Could not start TLS');
  if (!ldap_bind($ds, $user, $pass)) exit('Bind operation failed');

  // A quick list operation to make sure it worked
  if (!$result = ldap_list($ds, 'dc=domain,dc=local', 'objectClass=*')) exit('List operation failed');
  print_r(ldap_get_entries($ds, $result));

Досадно, что ни putenv('LDAPTLS_REQCERT=never');, ни $_ENV['LDAPTLS_REQCERT'] = 'never'; не будут работать - вы должны либо создать файл конфигурации, либо статически установить переменную.

Если вы хотите проверить сертификаты, вам нужно будет дополнительно прочитать о том, как правильно настроить OpenLDAP.

Источники для этого:

0 голосов
/ 12 декабря 2011

Вы установили PHP --with-ldap [= DIR]?

Также:

  1. Не используйте ldap_start_tls (), если выуже подключен к серверу LDAP через SSL, например, "ldaps: // hostame".
  2. вызовите ldap_connect () с ldap: // вместо ldaps: // для успешного выполнения ldap_start_tls ()

Источник .

...