В настоящее время я пытаюсь настроить SSL для OpenLDAP на Centos 7 с помощью самоподписанного сертификата. LDAP работает без SSL. Я сделал следующие команды:
Создание сертификата / ключа и смена владельца:
openssl req -new -x509 -nodes -out /etc/openldap/certs/ldap.cert -keyout /etc/openldap/certs/ldap.key -days 730
chown -R ldap:ldap /etc/openldap/certs/ldap*
Создание файла ldif для публикации изменений сертификата:
dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/ldap.key
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/ldap.cert
Публикация изменений с помощью ldapmodify -Y EXTERNAL -H ldapi:/// -f certs.ldif
После этого обновляю /etc/sysconfig/slapd
как это:
SLAPD_URLS="ldapi:/// ldap:/// ldaps:///"
Я перезапустил slapd
демон и проверил, что LDAP прослушивает порт 636, что и происходит.
На клиенте я установил пакеты openldap-clients
и nss-pam-ldapd
. Я настроил хост, чтобы я мог войти в систему с моими пользователями LDAP:
authconfig --enableldap --enableldapauth --ldapserver=ldaps://ldap.local --ldapbasedn="dc=ldap,dc=local" --enablemkhomedir --disableldaptls --update
в /etc/nslcd.conf
я добавил tls_reqcert
чтобы разрешить самоподписанные сертификаты.
Наконец, если я попытаюсь получить информацию о пользователе с помощью getent passwd user
он ничего не возвращает в качестве вывода. Пользователь действительно существует в каталоге LDAP. Если я попытаюсь сделать ldapsearch
Я получаю следующую ошибку:
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
Я не совсем уверен, что могу сделать, чтобы решить эту проблему на данный момент.
Любая помощь будет оценена.
С уважением,
Маркус
Проблема в том, что сервер OpenLDAP, поставляемый с RHEL / CentOS, связан с libnss Mozilla, но используемые вами файлы сертификатов / ключей подходят только для OpenSSL lib. libnss требует парольную фразу в "ключевом" файле и файле сертификата, указывающую на базу данных сертификата / ключа libnss.
Так как Red Hat сбросит пакет openldap-серверы из их распределения в любом случае я настоятельно рекомендую использовать пакеты RPM, скомпилированные проектом LDAP Toolbox, которые связаны с OpenSSL:
Проект LTB - OpenLDAP RPMs / репозиторий Yum
RPM LTB устанавливают компоненты OpenLDAP, полностью отделенные от пакетов ОС, в / usr / local / openldap. Таким образом, RPM LTB не конфликтуют с другими пакетами OpenLDAP.
Обратите внимание, что путь по умолчанию для сокета ldapi: // сборок LTB также находится ниже / usr / local / openldap. Так, например, вместо ldapmodify вы должны использовать / usr / local / openldap / bin / ldapmodify.
Пожалуйста, обратитесь к Руководство администратора OpenLDAP 2.4 чтобы понять, как настроить сервер OpenLDAP с нуля. Хотя это кажется сложнее, чем использование подготовленной конфигурации пакета ОС, это дает вам лучшее понимание методов конфигурации OpenLDAP, ведущих к более надежной работе.
Проверьте /usr/libexec/openldap/create-certdb.sh
создавать /etc/ldap/certs/
файлы.
Это должно генерировать правильные файлы, насколько я помню, он использует /etc/pki/
как источник. Но я не уверен в этом на 100%.