[PHP] ldap over tls
От: BreakHeart  
Дата: 25.03.25 15:54
Оценка:
Здравствуйте! Подскажите, пожалуйста, в чем может быть проблема. При переводе скрипта с просто ldap на ldap over tls не проходит авторизация, а скрипт падает на вызове ldap_start_tls.
ini_set('display_errors',1);
error_reporting(E_ALL);
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL,9);
putenv('LDAPTLS_REQCERT=never');
$ldap = ldap_connect("ldap://".$ldaphost,$ldapport);
ldap_set_option($ldap, LDAP_OPT_X_TLS_REQUIRE_CERT, 0);
if(!ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3)){
  echo "Could not set LDAPv3\r\n";
}
else if(!ldap_start_tls($ldap)) {
  echo "Could not start secure TLS connection";
}

А влогах пишет следующее:
TLS trace: SSL_connect:before SSL initialization
TLS trace: SSL_connect:SSLv3/TLS write client hello
TLS trace: SSL_connect:SSLv3/TLS write client hello
TLS trace: SSL_connect:SSLv3/TLS read server hello
TLS trace: SSL_connect:TLSv1.3 read encrypted extensions
TLS trace: SSL_connect:SSLv3/TLS read server certificate request
TLS certificate verification: depth: 0, err: 20, subject: /CN=ad.test.local, issuer: /DC=local/DC=test/CN=test-AD-CA
TLS certificate verification: Error, unable to get local issuer certificate
TLS trace: SSL3 alert write:fatal:unknown CA
TLS trace: SSL_connect:error in error
TLS: can't connect: error:80000002:system library::No such file or directory.
Re: [PHP] ldap over tls
От: Anton Batenev Россия https://github.com/abbat
Дата: 25.03.25 21:14
Оценка:
Здравствуйте, BreakHeart, Вы писали:

BH>
BH> TLS certificate verification: Error, unable to get local issuer certificate
BH>


В списке доверенных сертификатов отсутствует CA, который выпустил сертификат для endpoint. Судя по "DC=local" твой эндпоинт использует самоподписанный сертификат, его надо добавить в список доверенных локально для соединения или глобально (что плохо).
Re[2]: [PHP] ldap over tls
От: BreakHeart  
Дата: 26.03.25 06:49
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Здравствуйте, BreakHeart, Вы писали:


BH>>
BH>> TLS certificate verification: Error, unable to get local issuer certificate
BH>>


AB>В списке доверенных сертификатов отсутствует CA, который выпустил сертификат для endpoint. Судя по "DC=local" твой эндпоинт использует самоподписанный сертификат, его надо добавить в список доверенных локально для соединения или глобально (что плохо).



В итоге по пути c:\openldap\sysconf\ldap.conf добавил TLS_REQCERT never и всё заработало