2015-03-18 3 views
1

У меня есть VM, работающая CentOS 7 с установленным стеком LAMP. На виртуальной машине я пытаюсь создать соединение LDAPS с контроллером домена, который является виртуальной машиной Windows 2008 R2. Сертификат SSL, который я использую, является самозаверяющим, и CA был добавлен в доверенность CA CentOS 7.ldap_bind() - Не удается связаться с сервером LDAP

Я могу подключиться к контроллеру домена через ldapsearch. Если уровень отладки ldapsearch установлен в 1, я могу проверить, что мой сертификат действителен.

ex.) ldapsearch -H "ldaps://server.ad.com" -D "domain\user-name" -W -d 1 

Всякий раз, когда я пытаюсь использовать LDAPS с помощью PHP, я получаю ldap_connect(), как успех, но и ldap_bind() всегда ошибки с -1 Не удается связаться с сервером LDAP. Ниже приведен пример кода:

<?php 

define(LDAP_OPT_DIAGNOSTIC_MESSAGE,0x0032); 
echo "defined LDAP_OPT_DIAGNOSTIC_MESSAGE <br />"; 

$handle = ldap_connect("ldaps://server.ad.com:636"); 
echo "called ldap_connect <br />"; 
$errorCode = ldap_errno($handle); 
echo "error code: $errorCode <br />"; 
$errorMsg = ldap_error($handle); 
echo "error message: $errorMsg <br />"; 

if (!$handle) 
{ 
    echo "ldap_connect method returned null <br />"; 
} 
else 
{ 
    echo "ldap_connect returned a handle! <br />"; 
} 

$bind = ldap_bind($handle, 'domain\user', 'password'); 
echo "called ldap_bind <br />"; 
$errorCode2 = ldap_errno($handle); 
echo "error code: $errorCode2 <br />"; 
$errorMsg2 = ldap_error($handle); 
echo "error message: $errorMsg2 <br />"; 

if (!$bind) 
{ 
    echo "ldap_bind method returned null <br />"; 
} 
else 
{ 
    echo "ldap_bind returned a bind! <br />"; 
} 

if(ldap_get_option($handle, LDAP_OPT_DIAGNOSTIC_MESSAGE, $extended_error)) 
{ 
    echo "Error binding to LDAP: $extended_error"; 
} 
else 
{ 
    echo "Error bind to LDAP: No additional information is available."; 
} 
?> 

Выход:

defined LDAP_OPT_DIAGNOSTIC_MESSAGE 
called ldap_connect 
error code: 0 
error message: Success 
ldap_connect returned a handle! 
called ldap_bind 
error code: -1 
error message: Can't contact LDAP server 
ldap_bind method returned null 
Error bind to LDAP: No additional information is available. 

Я чувствую, что «не удается связаться с сервером LDAP» является слишком общим сообщения об ошибке, так что я пытался добавить LDAP_OPT_DIAGNOSTIC_MESSAGE (http://php.net/manual/en/function.ldap-bind.php - первый комментарий). Но это, похоже, не работает.

Любые идеи?

ответ

1

После дальнейшего изучения я обнаружил, что запуск этого файла PHP через командную строку будет успешно связываться. Это было просто неудачно при просмотре в браузере.

С этой информацией я смог задать еще один вопрос на ServerFault и обнаружил, что это связывание фактически не работает из-за конфигурации SELinux.

См. Полный ответ здесь: https://serverfault.com/questions/677013/php-executes-with-different-results-in-command-line-than-when-browsed-to-in-apac

Смежные вопросы