Php7.2 ldap_start_tls (): невозможно запустить TLS - PullRequest
0 голосов
/ 12 июня 2019

Невозможно подключиться к серверу LDAP с помощью Start TLS. Получение ошибки ниже: "PHP сообщение: PHP Предупреждение: ldap_start_tls (): невозможно запустить TLS: ошибка соединения

Эта программа PHP работает на экземпляре Linux RHEL 7.6 с PHP 7.2.17 Nginx 1.12.2. Он пытается подключиться к серверу Active Directory, работающему под управлением Windows Server 2016. Цель этой программы - предоставить пользователям веб-интерфейс для сброса своих паролей AD. Сервер Active Directory также является центром сертификации, а сертификат CA находится на сервере Linux. Любая помощь приветствуется!

Настройка LDAP в PHP

# LDAP
$ldap_url = "ldap://hostname.domain.com:389";
$ldap_starttls = true;
$ldap_binddn = "cn=service,ou=Service Accounts,dc=domain,dc=com";
$ldap_bindpw = "password";
$ldap_base = "dc=domain,dc=com";
$ldap_login_attribute = "sAMAccountName";
$ldap_fullname_attribute = "cn";
$ldap_filter = "(&(objectClass=user)(sAMAccountName={login})(!(userAccountControl:1.2.840.113556.1.4.803:=2)))";

Конфигурация OpenLDAP в \ etc \ openldap \ ldap.conf:

TLS_CACERT /etc/openldap/certs/rootCA.cer

Функция PHP:

if ( $result === "" ) {

    # Connect to LDAP
    $ldap = ldap_connect($ldap_url);
    ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
    if ( $ldap_starttls && !ldap_start_tls($ldap) ) {
        $result = "ldaperror";
        error_log("LDAP - Unable to use StartTLS");
    } else {

    # Bind
    if ( isset($ldap_binddn) && isset($ldap_bindpw) ) {
        $bind = ldap_bind($ldap, $ldap_binddn, $ldap_bindpw);
    } else {
        $bind = ldap_bind($ldap);
    }

    if ( !$bind ) {
        $result = "ldaperror";
        $errno = ldap_errno($ldap);
        if ( $errno ) {
            error_log("LDAP - Bind error $errno  (".ldap_error($ldap).")");
        }

Я могу подключиться к серверу Active Directory с помощью следующей команды ldapsearch

ldapsearch -h hoostname.domain.com -D "cn=service,ou=Service Accounts,dc=domain,dc=com" -b "dc=domain,dc=com" -W -ZZ

...