OpenLDAP/TLS

Материал из ALT Linux Wiki
Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.

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

  1. Сертификат (ldap.cert) и ключ (ldap.key) необходимо скопировать в /etc/openldap/ssl/. Именно скопировать: в дистрибутивах ALT slapd запускаетя в chroot, и на фактическое место файлы переносится с помощью update_chrooted (если сделать симлинки, то в chroot`е они могут стать битыми).
  2. В /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.

Ссылки