Назад | Перейти на главную страницу

Apache + LDAP auth в Ubuntu говорит: «Не удается связаться с сервером LDAP», в то время как ldapsearch идеален

Я перехожу с существующего сервера apache + LDAP + mysql + php на новую аппаратную платформу. На старом сервере работает Debian Lenny, у меня нет доступной документации по конфигурации (было сделано предыдущим системным администратором); Новый сервер работает под управлением Ubuntu 10.04.2 LTS 32bit.

После установки Apache и настройки клиента LDAP на новом сервере ldapsearch главному серверу LDAP (другому выделенному серверу) просто возвращает результаты. Однако при использовании apache с https журналы жалуются, что «не удается связаться с сервером LDAP».

Я проверяю подлинность с помощью ldaps и могу подтвердить, что порт 636 открыт на главном сервере LDAP. Я не могу понять, почему apache не работает, пока работает обычный ldapsearch!

Ниже приведена часть конфигурации виртуального хоста:

<Directory />
                Options FollowSymLinks
                AllowOverride None
                #AuthLDAPEnabled on
                AuthType Basic
                AuthBasicProvider ldap
                AuthName "Private"
                AuthLDAPURL ldaps://master.ldap.organisation.com:636/ou=people,dc=organisation,dc=com?uid
                AuthzLDAPAuthoritative off
                require valid-user
                AddType application/x-httpd-php .php .phtml
                <IfModule mod_php4.c>
                        php_flag magic_quotes_gpc Off
                        php_flag track_vars On
                        php_value include_path .
                </IfModule>
        </Directory>

Любая помощь / предложение очень ценится!

Вам нужно указать Apache доверять сертификату сервера LDAP.

Видеть этот.

ldapsearch (и другие двоичные файлы ldap *) взяты из набора инструментов OpenLDAP. Причина, по которой ldapsearch работает (а Apache - нет), заключается в том, что предыдущий системный администратор должен был поместить сертификат, который использует сервер LDAP (или сертификат CA, выдавший сертификат сервера LDAP), в то место, где инструменты OpenLDAP ищут сертификаты - обычно это является /etc/openldap/cacerts, но он несколько зависит от дистрибутива.

Загляните в этот каталог.

После того, как вы нашли нужный сертификат, используйте директиву mod_ldap (см. Вот), чтобы указать на него. Разместите эту директиву перед конфигурацией LDAP. Например:

Если это сертификат клиента LDAP-сервера:

LDAPTrustedGlobalCert CERT_BASE64 /etc/openldap/cacerts/ldap-server.pem

Если это сертификат ЦС, подписавшего сертификат сервера LDAP:

LDAPTrustedGlobalCert CERT_CA /etc/openldap/cacerts/ldap-cacert.pem

Используйте инструмент командной строки OpenSSL, чтобы проверить сертификат, чтобы определить, какой это:

openssl x509 -in /path/to/cert.pem -noout -text

В libgcrypt11 есть ошибки, которые вызывают проблемы при использовании GnuTLS 2.10. * Или более ранней версии, и их можно обойти, запустив nscd на клиенте LDAP.

sudo apt-get install nscd

В GnuTLS 2.11. * Или более поздней версии предпочтительный криптографический сервер был изменен на крапиву. Для Ubuntu 12.04 см. Этот отчет об ошибке:

https://bugs.launchpad.net/bugs/926350