Intereting Posts
Имена API JIRA API содержат целые пути опубликованных файлов Как вставить json-массив в базу данных mysql Службы XAMPP Apache и MySQL не запускаются и не останавливаются после первой установки Переслать данные из одного действия контроллера в другое в yii2 Ошибка HTTP-запроса в неверном запросе PHP PHP param по ref => присваивать ref = NULL PHP preg_split с двумя разделителями, если разделитель не находится в кавычках Как улучшить мой редактор изображений php для поддержки альфа-PNG и прозрачных GIF-файлов Уникальное ограничение электронной почты для проверки подлинности Laravel 4 как отправить содержимое узла в xml на другую страницу с помощью php? Лучший способ сделать Twitter emojis из twitter в html? Доступ к сеансу Facebook через PHP возможно ли, если обратный вызов в параметре array_filter принимает параметр? Отфильтруйте файл csv словом или текстом, используя php PHP – Тип содержимого, не заданный приложением / x-www-form-urlencoded

Аутентификация самозаверяющего сертификата для подключения LDAPS

Я хочу сделать безопасное соединение ldap (ldaps) с Linux (Linux 3.2.0-4-amd64 # 1 SMP Debian 3.2.51-1 x86_64 GNU / Linux) на сервер Windows 2012, чтобы сменить пароли пользователей в активном каталог, через php. Для этого я создал самозаверяющий сертификат (с помощью диспетчера Windows Server) на сервере, но когда я пытаюсь подключиться, я получаю следующую ошибку (путем включения опции отладки на: ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7); ):

 ldap_create ldap_url_parse_ext(ldaps://xxx.xxx.xxx.xxx) ldap_bind_s ldap_simple_bind_s ldap_sasl_bind_s ldap_sasl_bind ldap_send_initial_request ldap_new_connection 1 1 0 ldap_int_open_connection ldap_connect_to_host: TCP xxx.xxx.xxx.xxx:636 ldap_new_socket: 3 ldap_prepare_socket: 3 ldap_connect_to_host: Trying xxx.xxx.xxx.xxx:636 ldap_pvt_connect: fd: 3 tm: -1 async: 0 TLS: peer cert untrusted or revoked (0x42) TLS: can't connect: (unknown error code). ldap_err2string PHP Warning: ldap_bind(): Unable to bind to server 

Кажется, клиент не может доверять сертификату, так как он сам подписал.

Какие шаги следует предпринять для безопасного подключения? Сертификаты клиентской стороны хранятся в /etc/ssl/certs/ca-certificates.crt

Related of "Аутентификация самозаверяющего сертификата для подключения LDAPS"

Вы должны явно указать клиенту LDAP игнорировать недоверенные сертификаты. Вы можете сделать это, добавив следующее в свой файл ldap.conf:

 TLS_REQCERT never 

Однако это решение не является предпочтительным. Вы должны добавить требуемый корень CA к своему клиенту и убедиться, что сертификат правильно сгенерирован с именем сервера в нем (и если моя память служит мне правильной полной цепочкой CA), в противном случае ничто не остановило бы кого-либо для совершения атаки MITM.

Ваш LDAP-сервер использует самозаверяющий сертификат, поэтому, чтобы доверять этому, клиенту LDAP нужен сертификат для ЦС, который создал этот сертификат.

  1. Поместите файл сертификата своего CA в /etc/ldap/certs/myca.pem (вам может потребоваться mkdir каталог certs).
  2. Добавьте новую строку с TLS_CACERT /etc/ldap/certs/myca.pem в /etc/ldap/ldap.conf . (Вы можете увидеть аналогичную строку с «/etc/ssl/certs/ca-certificates.crt».)

     $ php -a Interactive mode enabled php > ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7); ... ldap_init: using /etc/ldap/ldap.conf ... php > $conn = ldap_connect("your_ldap_server"); php > ldap_start_tls($conn); 

Без изменения конфигурации вы увидите PHP Warning: ldap_start_tls(): Unable to start TLS: Connect error in php shell code on line 1 . Комментарии к документации по функциям обеспечивают дальнейшее чтение, но все, кажется, идут прямо в настройке «TLS_REQCERT never». Рабочий! = Безопасный. demand – это значение по умолчанию, и я оставил бы его таким образом (или явно установил это). Документация по TLS_REQCERT находится здесь . (Также кажется, что если вы установите «никогда», а следуете с более поздней строкой «TLS_CACERT», она игнорирует никогда.

Примечание. Я знаю, что вы использовали «ldaps: //» и ldap_bind (), но попробуйте использовать ldap_start_tls ().

STARTTLS – альтернативный подход, который теперь является предпочтительным методом шифрования LDAP-соединения.