Перейти к основному содержимому
Версия: 7.0

Windows Server

PHP-модуль ldap на Windows загружается как php_ldap.dll и использует клиентские библиотеки OpenLDAP. При подключении по LDAPS или при использовании StartTLS проверку сертификата сервера выполняет не хранилище сертификатов Windows, а TLS-слой, с которым работает OpenLDAP.

Добавление сертификата в хранилище доверенных сертификатов Windows не используется при проверке LDAPS-соединения в php_ldap.dll и не влияет на работу OpenLDAP. OpenLDAP должен получить путь к CA-сертификату или CA bundle, которым был выпущен сертификат сервера службы каталога.

Как это работает

При установке TLS-соединения LDAP-сервер отправляет свой сертификат. OpenLDAP проверяет, можно ли построить доверенную цепочку от этого сертификата до известного центра сертификации. Если CA-сертификат не указан в конфигурации OpenLDAP, подключение будет завершено с ошибкой проверки сертификата.

На Windows для PHP LDAP обычно используется файл ldap.conf. В нём задаётся параметр TLS_CACERT с путём к CA-сертификату или bundle-файлу. Чтобы PHP-процесс использовал нужный файл конфигурации и сертификат, задаются системные переменные окружения LDAPCONF и LDAPTLS_CACERT.

Настройка

осторожно

Обратите внимание:

  • Команды необходимо выполнять в PowerShell от имени администратора.
  • После изменения нужно перезагрузить Windows Server, чтобы все процессы получили обновлённое окружение.
  1. Создать каталог для конфигурации OpenLDAP:
New-Item -ItemType Directory -Force C:\openldap\sysconf
  1. Поместить CA-сертификат или CA bundle в каталог:
C:\openldap\sysconf\ldaps-ca-bundle.cer

Файл должен быть в PEM/Base64-формате:

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

Если в инфраструктуре используется промежуточный CA, добавить в этот же файл всю цепочку CA-сертификатов.

  1. Создать файл C:\openldap\sysconf\ldap.conf со следующим содержимым:
TLS_CACERT C:/openldap/sysconf/ldaps-ca-bundle.cer

TLS_REQCERT demand
к сведению

TLS_CACERT указывает путь к CA bundle. Рекомендуется использовать прямые слеши / в пути.

  1. Задать системные переменные окружения для OpenLDAP:
[Environment]::SetEnvironmentVariable("LDAPCONF", "C:\openldap\sysconf\ldap.conf", "Machine")
[Environment]::SetEnvironmentVariable("LDAPTLS_CACERT", "C:/openldap/sysconf/ldaps-ca-bundle.cer", "Machine")
  1. Перезапустить IIS:
iisreset