Я перехожу с существующего сервера 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 см. Этот отчет об ошибке: