SSL-сертификат ZF2 LDAP недоверен

Я использую Zend Framework 2 Zend\Authentication\Adapter\Ldap для аутентификации в Windows Active Directory. Все работает отлично, когда я не пытаюсь использовать SSL. С SSL я получаю следующую ошибку:

0x51 (Не удается связаться с сервером LDAP; ошибка: 14090086: процедуры SSL: SSL3_GET_SERVER_CERTIFICATE: проверка сертификата не удалась (не удалось получить сертификат локального эмитента)):

Я подозреваю, что это потому, что мы используем самозаверяющие сертификаты. Я хотел бы обойти проверку сертификата. Используя стандартный php ldap_set_option, я мог установить для TLS_REQCERT значение never. Я не могу найти в параметрах ldap, предоставленных адаптером аутентификации Zend, как установить это свойство. Есть ли параметр конфигурации, который я только что пропустил в документации, который говорит об этом?

Кто-нибудь знает, как установить REQCERT = never внутри ZF2?


person Eva Donaldson    schedule 06.08.2014    source источник


Ответы (2)


При подключении через SSL клиент проверяет сертификат сервера по умолчанию — один из способов отключить это — установить TLS_REQCERT never в файле ldap.conf вашего LDAP и перезапустить Apache.

Если вы действительно заботитесь о сертификате сервера, вы должны разместить сертификат на веб-сервере.

person ins0    schedule 07.08.2014
comment
Я использую XAMPP в Windows и не могу найти файл ldap.conf. Я попытался добавить строку TLS_REQCERT never в свой httpd.conf, но тогда Apache не запустился. Должен ли я создать ldap.conf? - person Eva Donaldson; 07.08.2014
comment
не уверен но под windows нужно создать файл под C:\OpenLDAP\sysconf\ldap.conf - person ins0; 07.08.2014
comment
этому ответу нужно больше голосов ... это сэкономило нам часы тряски головой - person Monish Sen; 12.11.2020

Я должен отметить, что это не оправдывает отсутствие проверки ваших сертификатов, но для тестирования ZF2 и LDAP, работающих на Apache/PHP или в командной строке, если вы разрабатываете, вот ответ.

Для Апача 2.4

Я считаю, что вы можете разместить это глобально для Apache в «httpd.conf», для каждого веб-сайта в конфигурации «VirtualHost» или, более конкретно, в локальной папке «.htaccess». Я могу помочь в дальнейшем, если вам нужно понять различия между этими файлами, но на данный момент было бы полезно знать, как настроить VirtualHost для вашего конкретного приложения ZF2, поэтому это не применяется везде к каждому сайту, который вы разрабатываете.

Убедитесь, что модуль mod_env в Apache включен.

Добавьте это под VirtualHost для приложения ZF2:

<VirtualHost *:80>
  DocumentRoot /www/example1
  ServerName www.example.com

  # The following allows for not requiring the certificate when developing between LDAP and AD SSL.
  SetEnv LDAPTLS_REQCERT never
  # Other directives here for your ZF2/PHP LDAP based site

</VirtualHost>

Обязательно перезапустите Apache! Дополнительную информацию о среде см. на странице http://httpd.apache.org/docs/current/mod/mod_env.html.

Интерфейс командной строки PHP для разработки (например, в Linux)

Когда вы запускаете PHP из командной строки (в оболочке bash), чтобы протестировать свой сайт ZF2, перейдите в общую папку и выполните следующие команды для разработки:

cd [path_to_ZF2_development_directory_without_brackets]/public

// sets the environment variable for this session only
LDAPTLS_REQCERT=never

// Runs PHP 5 's built in non-production Web server on the folder; listening on port 80 from all available sources.
php -S 0.0.0.0:1080 -t ./ 

Поэтому в моем примере я бы пошел (cd) в свою папку zf2-application/public и запустил эти две другие команды.

В целом, эти предложения избавляют от ошибки, но теперь вам придется иметь дело с любыми другими проблемами LDAP в Active Directory, которые вам нужно исправить в своем коде или в Active Directory.

person m1st0    schedule 11.09.2014
comment
Извините, я забыл отметить прямо в вашем PHP-коде ZF2, вы также можете просто добавить это только для разработки (обязательно удалите его в производственных целях, где сертификат может быть проверен): putenv('LDAPTLS_REQCERT=never'); - person m1st0; 12.09.2014