Глава 6. OpenLDAP ldap.conf

Конфигурационный файл ldap.conf содержит информацию и директивы конфигурации, используемые клиентами OpenLDAP. При необходимости эти директивы могут использоваться и инструментами OpenLDAP, а также считываются и используются демоном slapd, когда тот работает в режиме клиента, например, выступая в роли потребителя репликации в конфигурации репликации с главным и подчинённым серверами или с несколькими главными серверами. При этом значения для настроек функций поставщика репликации демон slapd получает из конфигурационных параметров, указанных в cn=config (slapd.conf).

Примечание: Список параметров конфигурации, касающихся настройки функций потребителя репликации (olcSyncrepl/syncrepl), можно найти здесь.

Директивы TLS

Какие именно клиентские директивы TLS будут использоваться, зависит от того, будет ли клиент TLS отправлять сертификат X.509 и проверять сертификат TLS сервера (в этом случае требуется большинство директив), либо только проверять сертификат TLS сервера (в этом случае требуется только директива TLS_CACERT и, опционально, директива TLS_CIPHER_SUITE). Далее, для удобства, введены следующие обозначения: если директива используется для посылки сертификата клиента, это указывается ключевым словом ОБОЮДНО (поскольку сервер всегда будет отправлять свой сертификат), а в случае использования директивы только для проверки клиентом сертификата сервера — ключевым словом КЛИЕНТ.

TLS_CACERT

TLS_CACERT /path/to/file.ext

КЛИЕНТ+ОБОЮДНО. Определяет файл, в котором содержится сертификат Удостоверяющего центра (Certicate Authority, CA), который также называют корневым сертификатом. Позволяет клиенту проверить подлинность сертификата сервера LDAP. Данный файл требуется при использовании как самоподписанного, так и коммерческого сертификата. Корневой сертификат должен быть получен у поставщика сертификатов X.509, или, в случае самоподписанного сертификата, скопирован из соответствующего местоположения. Как правило, это файл в формате PEM (Privacy enhanced Mail) c суффиксом/расширением .pem или, если он был получен из установки браузера MSIE, с суффиксом/расширением .cer. Если рабочий сертификат X.509 (указанный в директиве TLSCertificateFile slapd.conf) подписан промежуточным удостоверяющим центром, то в файле формата PEM должны присутствовать все сертификаты удостоверяющих центров вплоть до центра корневого уровня. PEM — это текстовый формат, и несколько сертификатов могут помещаться в один и тот же файл в произвольном порядке — смотрите заметки и примеры по формату PEM. Пример конфигурации OpenLDAP с самоподписанным сертификатом можно посмотреть здесь. В данном файле нет конфиденциальной информации (сертификат X.509 содержит только открытый ключ).

Наверх

TLS_CACERTDIR

TLS_CACERTDIR /path/to/directory

КЛИЕНТ+ОБОЮДНО. Определяет путь к доверенному хранилищу ключей, управляемому библиотеками Mozilla NSS или OpenSSL. Нет необходимости указывать эту директиву, если определена директива TLS_CACERT. Если же присутствуют обе директивы, сначала будет использоваться значение из TLS_CACERT.

Up Arrow

TLS_CERT

TLS_CERT /path/to/file.ext

ОБОЮДНО. Определяет путь к файлу сертификата X.509, который будет отправлен на сервер в процессе обмена при взаимной аутентификации. Обычно в формате PEM (c суффиксом/расширением .pem или .cer). В данном файле нет конфиденциальной информации (сертификат X.509 содержит только открытый ключ).

Up Arrow

TLS_CIPHER_SUITE

TLS_CIPHER_SUITE cipher-list

КЛИЕНТ+ОБОЮДНО. Это необязательная директива и по умолчанию подразумевается значение ALL (что эквивалентно openssl ciphers -v ALL). Определяет один или несколько шифров, которые будут использоваться во время переговоров об установке соединения TLS. В ходе этих переговоров клиент TLS предлагает список шифров и сервер TLS примет первый шифр из своего списка шифров, который совпадёт с одним из предлагаемых клиентом. Используемый в описании данной директивы термин cipher-list определяет список (в формате OpenSSL), который будет переконвертирован библиотеками OpenSSL в список шифров в формате TLS/SSL. Дополнительную информацию о формате chiper-list можно получить в документации по шифрам OpenSSL. Примеры конфигурации OpenLDAP с самоподписанным сертификатом можно посмотреть здесь.

Список доступных шифров (и, следовательно, cipher-list) определяется форматом открытого ключа, содержащегося в сертификате X.509. В случае отправки сертификата клиентом TLS открытый ключ извлекается из сертификата, указанного в директиве TLS_CERT, в случае только выполнения проверки сертификата сервера — извлекается из сертификата сервера TLS, в случае обоюдного обмена сертификатами — извлекается из обоих сертификатов. Так, если сертификат (сертификаты) содержат открытый ключ RSA, то только шифры открытого ключа RSA могут быть использованы на этапах обмена ключами/аутентификации при установке соединения TLS. Если криптоалгоритм открытого ключа входящего сертификата сервера TLS не удаётся опознать, то в качестве списка будет использоваться ALL (смотрите команды ниже). Отдельные пункты в cipher-list разделяются двоеточием, запятой или пробельным символом. Далее приводится подмножество имён RSA TLSv1, которые могут фигурировать в cipher-list, и эквивалентных им текстовых значений шифров TLS (при отправке по каналу они переконвертируются в шестнадцатеричные значения). Примечание: Слово EXPORT (или EXP), встречающееся в некоторых именах, указывает, что эти шифры являются экспортируемыми, то есть некоторые шифры разрешено использовать только в определённых странах (смотрите документацию Бюро промышленности и безопасности Министерства торговли США и Вассенарские соглашения), и это необходимо учитывать при настройке системы TLS, которая будет использоваться на международном уровне.

НАЗВАНИЕ ШИФРА TLS                      НАЗВАНИЕ CIPHER-LIST OPENSSL
==============================          ===================
TLS_RSA_WITH_NULL_MD5                   NULL-MD5
TLS_RSA_WITH_NULL_SHA                   NULL-SHA
TLS_RSA_EXPORT_WITH_RC4_40_MD5          EXP-RC4-MD5
TLS_RSA_WITH_RC4_128_MD5                RC4-MD5
TLS_RSA_WITH_RC4_128_SHA                RC4-SHA
TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5      EXP-RC2-CBC-MD5
TLS_RSA_WITH_IDEA_CBC_SHA               IDEA-CBC-SHA
TLS_RSA_EXPORT_WITH_DES40_CBC_SHA       EXP-DES-CBC-SHA
TLS_RSA_WITH_DES_CBC_SHA                DES-CBC-SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA           DES-CBC3-SHA
TLS_RSA_WITH_AES_128_CBC_SHA            AES128-SHA
TLS_RSA_WITH_AES_256_CBC_SHA            AES256-SHA
TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA     EXP1024-DES-CBC-SHA
TLS_RSA_EXPORT1024_WITH_RC4_56_SHA      EXP1024-RC4-SHA

Чтобы вывести список значений cipher-list, поддерживаемых локальной инсталляцией OpenSSL, используйте:

# Все действительные шифры (ALL) 
openssl ciphers -v ALL

# Все действительные шифры только для TLSv1
openssl ciphers -v -tls1 ALL

# Действительные шифры только для TLSv1, использующие
# алгоритм обмена ключами/аутентификации RSA
openssl ciphers -v -tls1 RSA

# Действительные шифры только для TLSv1, использующие
# алгоритм обмена ключами/аутентификации RSA
# исключая экспортируемые шифры
openssl ciphers -v -tls1 RSA:!EXP
# ПРИМЕЧАНИЕ: в некоторых оболочках знак ! требует экранирования
openssl ciphers -v -tls1 RSA:\!EXP

# То же, что и предыдущая команда, но исключаются NULL-шифры
openssl ciphers -v -tls1 RSA:!EXP:!NULL
# ПРИМЕЧАНИЕ: в некоторых оболочках знак ! требует экранирования
openssl ciphers -v -tls1 RSA:\!EXP:\!NULL

# Действительные шифры только для TLSv1, использующие
# алгоритм обмена ключами/аутентификации RSA
# только экспортируемые шифры
openssl ciphers -v -tls1 RSA:EXP
# ИЛИ
openssl ciphers -v TLSv1+RSA:EXP

В директиве TLS_CIPHER_SUITE в качестве chipher-list могут указываться либо общие параметры, например, RSA, тогда для получения списка конкретных шифров может быть использована команда openssl, как показано выше (в этом случае порядок предпочтения шифров определяется openssl), либо явно заданный список шифров в порядке их предпочтения. Одно или несколько поддерживаемых значений в cipher-list должны поддерживаться сервером TLS. Алгоритм поиска совпадений шифров (выбора того, какой шифр будет использован) таков: первый (наиболее предпочтительный) шифр из предоставляемых клиентом, который также поддерживается и сервером, становится шифром соединения (сессии). В следующих примерах используется только подмножество TLSv1 (SSLv3):

# Cipher-list содержит только основанные на RSA
# шифры аутентификации и обмена ключами 
# поддерживаемые TLSv1 (и SSLv3)
TLS_CIPHER_SUITE TLSv1+RSA

# Cipher-list содержит только основанные на RSA
# шифры аутентификации и обмена ключами 
# поддерживаемые TLSv1 (и SSLv3)
# исключая экспортируемые и NULL-шифры
TLS_CIPHER_SUITE TLSv1+RSA:!EXPORT:!NULL

# Упорядоченный список основанных на RSA
# шифров аутентификации и обмена ключами 
TLS_CIPHER_SUITE DES-CBC-SHA:DES-CBC3-SHA:RC4-SHA:RC4-MD5

# Все шифры за исключением NULL-шифров
TLS_CIPHER_SUITE ALL:!NULL

# Значение по умолчанию, эквивалентно случаю
# когда директива не задана
TLS_CIPHER_SUITE ALL

Примечание: OpenSSL поддерживает ряд шифров, в результате применения которых происходит NULL-шифрование данных большого объёма и имитовставок MAC. Это означает, что безопасно выполняется только процесс аутентификации, а вся последующая передача данных происходит в открытом виде. Чтобы предотвратить использование таких шифров либо используйте значение !NULL в cipher-list, либо явно задайте список шифров, не включая в них NULL-шифры.

Наверх

TLS_CRLCHECK

TLS_CRLCHECK none|peer|all

КЛИЕНТ+ОБОЮДНО. Имеет смысл, только если сборка OpenLDAP использует обработчик CRL библиотеки OpenSSL. Может принимать значения none (по умолчанию, проверка сертификатов по CRL не производится), peer (проверяется только сертификат второй стороны соединения) или all (проверяется вся цепочка сертификатов).

Up Arrow

TLS_CRLFILE

TLS_CRLFILE /path/to/crl/file.ext

КЛИЕНТ+ОБОЮДНО. Имеет смысл, только если OpenLDAP собран с поддержкой утилит GNU. Определяет путь к списку отзыва сертификатов (Certificate Revokation List, CRL).

Up Arrow

TLS_KEY

TLS_CRLKEY /path/to/key/file.ext

ОБОЮДНО. Имеет смысл, только если клиент отправляет сертификат второй стороне соединения при взаимной аутентификации. Эта директива должна присутствовать, если присутствует директива TLS_CERT. Определяет путь к файлу, в котором содержится закрытый ключ, ассоциированный с сертификатом, указанным в TLS_CERT. Может быть в формате PEM (обычно с расширением .pem или .key). При использовании совместно с библиотекой OpenSSL данный файл НЕ должен быть защищён паролем (обычно файл с ключом защищается паролем из-за характера его содержимого). Для удаления пароля можно использовать следующую команду:

# Процедура для файлов в формате PEM.
# Для удаления пароля запрашивается установленный пароль.
# Скопируйте file2.key в указанное серверу OpenLAP расположение,
# назначьте ему минимальные права.
openssl rsa -in [file1.key] -out [file2.key]

Примечание: Хранить файл с ключом без пароля чрезвычайно опасно: если злоумышленник ознакомился с его содержимым, сертификат считается скомпрометированным. Этот файл следует защитить путём установки минимально возможных прав доступа (0640 для пользователя/группы, от имени которых запускается slapd).

Up Arrow

TLS_REQCERT

TLS_REQCERT never|allow|try|demand|hard

КЛИЕНТ+ОБОЮДНО. Необязательная директива, при её отсутствии значением по умолчанию считается demand. Указывает, каким образом клиент будет обрабатывать получение (или неполучение) сертификата сервера. Может принимать значения never (клиент не будет запрашивать сертификат сервера, но если он его получит, то проигнорирует и продолжит соединение), allow (клиент будет запрашивать сертификат сервера, но продолжит соединение, если сертификат не будет получен, либо возникнет какая-либо ошибка при проверке сертификата), try (клиент будет запрашивать сертификат сервера, но продолжит соединение, если сертификат не будет получен, однако при возникновении ошибки при проверке полученного сертификата соединение будет прервано), demand (клиент будет запрашивать сертификат сервера, но прервёт соединение, если сертификат не будет получен, либо возникнет ошибка при проверке полученного сертификата), либо hard (синоним для demand).

Наверх



Проблемы, комментарии, предположения, исправления (включая битые ссылки) или есть что добавить? Пожалуйста, выкроите время в потоке занятой жизни, чтобы написать нам, вебмастеру или в службу поддержки. Оставшийся день Вы проведёте с чувством удовлетворения.

Нашли ошибку в переводе? Сообщите переводчикам!

Copyright © 1994-2017 ZyTrax, Inc. Все права защищены. Последнее изменение страницы: 18 апреля 2018 г.
Переведено участниками проекта Pro-LDAP.ru в 2012-2019 г.