У меня есть 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 - первый комментарий). Но это, похоже, не работает.
Любые идеи?