Конфигурационный файл ldap.conf содержит информацию и директивы конфигурации, используемые клиентами OpenLDAP. При необходимости эти директивы могут использоваться и инструментами OpenLDAP, а также считываются и используются демоном slapd, когда тот работает в режиме клиента, например, выступая в роли потребителя репликации в конфигурации репликации с главным и подчинённым серверами или с несколькими главными серверами. При этом значения для настроек функций поставщика репликации демон slapd получает из конфигурационных параметров, указанных в cn=config (slapd.conf).
Примечание: Список параметров конфигурации, касающихся настройки функций потребителя репликации (olcSyncrepl/syncrepl), можно найти здесь.
Какие именно клиентские директивы TLS будут использоваться, зависит от того, будет ли клиент TLS отправлять сертификат X.509 и проверять сертификат TLS сервера (в этом случае требуется большинство директив), либо только проверять сертификат TLS сервера (в этом случае требуется только директива TLS_CACERT и, опционально, директива TLS_CIPHER_SUITE). Далее, для удобства, введены следующие обозначения: если директива используется для посылки сертификата клиента, это указывается ключевым словом ОБОЮДНО (поскольку сервер всегда будет отправлять свой сертификат), а в случае использования директивы только для проверки клиентом сертификата сервера — ключевым словом КЛИЕНТ.
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 /path/to/directory
КЛИЕНТ+ОБОЮДНО. Определяет путь к доверенному хранилищу ключей, управляемому библиотеками Mozilla NSS или OpenSSL. Нет необходимости указывать эту директиву, если определена директива TLS_CACERT. Если же присутствуют обе директивы, сначала будет использоваться значение из TLS_CACERT.
TLS_CERT /path/to/file.ext
ОБОЮДНО. Определяет путь к файлу сертификата X.509, который будет отправлен на сервер в процессе обмена при взаимной аутентификации. Обычно в формате PEM (c суффиксом/расширением .pem или .cer). В данном файле нет конфиденциальной информации (сертификат X.509 содержит только открытый ключ).
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 none|peer|all
КЛИЕНТ+ОБОЮДНО. Имеет смысл, только если сборка OpenLDAP использует обработчик CRL библиотеки OpenSSL. Может принимать значения none (по умолчанию, проверка сертификатов по CRL не производится), peer (проверяется только сертификат второй стороны соединения) или all (проверяется вся цепочка сертификатов).
TLS_CRLFILE /path/to/crl/file.ext
КЛИЕНТ+ОБОЮДНО. Имеет смысл, только если OpenLDAP собран с поддержкой утилит GNU. Определяет путь к списку отзыва сертификатов (Certificate Revokation List, CRL).
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).
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 г.