OpenLDAP/TLS
OpenLDAP и TLS/SSL
Ниже описан способ понятия TLS/SSL для OpenLDAP, без проверки сертификата сервера клиентам (мне важна только защита от сниффиров, правельные сертификаты описаны здесь: Настройка OpenLDAP и его клиентов).
Генерация сертификата
Для простой генерации сертификата можно использовать пакет cert-sh-functions. Готовой утилиты, для данного действа, в данном пакете нет, но содержащийся там шелфункцией ssl_generate пользоваться достаточно удобно:
sudo -H sh -c '. /usr/bin/cert-sh-functions; ssl_generate ldap ' Generating ldap SSL private key: /usr/bin/cert-sh-functions: line 125: success: command not found Generating ldap SSL certificate request: /usr/bin/cert-sh-functions: line 125: success: command not found Generating ldap SSL self-signed certificate: /usr/bin/cert-sh-functions: line 125: success: command not found
Несмотря на ругань, данная операция сгенерирует следующие файлы:
/var/lib/ssl/private/ldap.key /var/lib/ssl/certs/ldap.cert /var/lib/ssl/certs/ldap.csr
Полученный таким образом сертификат ldap.cert будет самоподписанным, а его CN=`hostname`.
Настройка slapd
- Сертификат (ldap.cert) и ключ (ldap.key) необходимо скопировать в /etc/openldap/ssl/. Именно скопировать: в дистрибутивах ALT slapd запускаетя в chroot, и на фактическое место файлы переносится с помощью update_chrooted (если сделать симлинки, то в chroot`е они могут стать битыми).
- В /etc/openldap/slapd.conf добавить следующие:
TLSCipherSuite HIGH:MEDIUM:+SSLv2 # Т. к. сертификат самоподписанный: TLSCACertificateFile /etc/openldap/ssl/ldap.cert TLSCertificateFile /etc/openldap/ssl/ldap.cert TLSCertificateKeyFile /etc/openldap/ssl/ldap.key
Настройка клиентов
Для большинства клиентов режим проверки сертификатов можно указать через файл /etc/openldap/ldap.conf (часто это единственное место, если файл отсутствует — его нужно создать). Для своей задачи, я использую такой:
# # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. #BASE dc=example, dc=com #URI ldap://ldap.example.com ldap://ldap-master.example.com:666 #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never tls_reqcert never # Полностью отключаю проверку серверного сертификата: TLS_CRLCHECK none
NSS/PAM
Редкий случай, когда cat /etc/openldap/ldap.conf не нужен: режим проверки серверного сертификата настраивается непосредственно в ##/etc/{nss, pam}_ldap.conf:
# OpenLDAP SSL mechanism # start_tls mechanism uses the normal LDAP port, LDAPS typically 636 ssl start_tls #ssl on # OpenLDAP SSL options # Require and verify server certificate (yes/no) # Default is to use libldap's default behavior, which can be configured in # /etc/openldap/ldap.conf using the TLS_REQCERT setting. The default for # OpenLDAP 2.0 and earlier is "no", for 2.1 and later is "yes". #tls_checkpeer yes tls_checkpeer no
Dovecot
В /etc/dovecot/dovecot-ldap.conf (см. Open LDAP и Dovecot) можно только включить TLS:
# Use TLS to connect to the LDAP server. tls = yes
Остальное — через /etc/openldap/ldap.conf.
OpenLDAP (репликация через syncprov/syncrepl)
В файле конфигурации БД (у меня /etc/openldap/slapd-hdb-db01.conf):
syncrepl rid=123 provider=ldap://ldap.my.lan:389 ... starttls=yes
Остальное — через /etc/openldap/ldap.conf.