Posted at:
21 Mar 2014
- NAME
-
Настройка сервера и клиента OpenLDAP на использование TLS/SSL соединений под CentOS 6
- Description
-
Я не буду вникать в детали генерации сертификатов, не буду детально рассказывать про параметры в конфигурационных файлах. Эта заметка предназначена для быстрой настройки подключения и демонстрации того, что можно использовать стандартные средства консоли без рукоблудства в конфигах.
Во-первых, нужно сгенерировать свой сертификат и подписать с помощью него клиентский ключ.
Во-вторых, добавить сертификаты в основную конфигурацию slapd и размножить на клиентских машинах с помощью authconfig и любого веб-сервера. На клиентах будет использоваться демон sssd, который позволяет службам обращаться не напрямую к серверу, а через демона. Тем самым обеспечивается быстродействие при использовании кэша и возможность автономной работы.
Настройка сервера И так, переходим в каталог в котором будут храниться наши сертификаты:
cd /etc/openldap/cacerts/
И генерируем сертификат
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout keys/ldapskey.pem -out ldapscert.pem
Замечание: в поле hostname нужно вводить реальное имя сервера OpenLDAP, по которому будет доступен сервер Ключ ldapscert.pem необходимо разместить на веб-сервере, доступ к которому будут иметь все клиентские машины, например так: http://key.server.ltd/ldapscert.pem Для надежности задаем права доступа только для пользователя ldap
chown -R ldap:ldap /etc/openldap/cacerts/* chmod 0400 /etc/openldap/cacerts/keys/ldapskey.pem
Вносим изменения для демона slapd (я всё еще использую устаревший метод правки конфигурации через /etc/openldap/slapd.conf)
--- TLSCertificateFile /etc/openldap/cacerts/ldapscert.pem TLSCertificateKeyFile /etc/openldap/cacerts/keys/ldapskey.pem TLSCipherSuite TLSv1+RSA:!NULL ---
Следующим шагом указываем серверу слушать только ldaps порт, и принимать соединения только через него. Для этого используется файл /etc/sysconfig/ldap
--- # yes/no, default: yes SLAPD_LDAP=no # Run slapd with -h "... ldapi:/// ..." # yes/no, default: yes SLAPD_LDAPI=no # Run slapd with -h "... ldaps:/// ..." # yes/no, default: no SLAPD_LDAPS=yes ---
Перезапускаем сервер
/etc/init.d/slapd stop rm -rf /etc/openldap/slapd.d/* sudo -u ldap slaptest -f slapd.conf -F slapd.d/ /etc/init.d/slapd restart
Замечание: slaptest я запускаю для того, чтобы новая форма конфигурации так же была актуальной. На этом настройка сервера закончена. Дополнительно нужно проверить доступность сервера по 636 порту. Настройка клиента Для конфигурации клиента будем использовать утилиту authconfig
SERVER="ldaps://ldap.server.ltd" # Сервер для подключения и он же hostname при генерации сертификата ROOTDN="o=server,c=ltd" # Корневая запись CERTURL="http://key.server.ltd/ldapscert.pem" # Адрес веб-сервера на котором лежит наш подписанный клиентский ключик authconfig --ldapserver=$SERVER --ldapbasedn=$ROOTDN --ldaploadcacert=$CERTURL --enablemkhomedir --updateall --enablesssd --enablesssdauth --enableldap --enableldapauth --disablenis --disablekrb5 --enableldaptls --enableldapstarttls
Настройка клиента окончена, можно проверить соединение с помощью
id user_name ldapsearch -v -x -b $ROOTDN ldapsearch -d 1 -v -H ldaps://$SERVER