Раздел 10. Модули Апача Пункты: 85 86 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 163 164 165 166 167 168 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 203 204 205 206 207 208 209 210 211 212 213 RU EN Пункт 157. Модуль Apache mod_ldap Этот модуль был создан для повышения производительности веб-сайтов, использующих внутренние соединения с серверами LDAP. В дополнение к функциям, предоставляемым стандартными библиотеками LDAP, этот модуль добавляет пул соединений LDAP и кэш общей памяти LDAP. Чтобы включить этот модуль, поддержка LDAP должна быть скомпилирована в apr-util. Это достигается добавлением Поддержка SSL/TLS зависит от того, какой инструментарий LDAP был связан с APR . На момент написания этой статьи APR-util поддерживает: OpenLDAP SDK (2.x или более позднюю версию), Novell LDAP SDK, Mozilla LDAP SDK, собственный Solaris LDAP SDK (на основе Mozilla) или собственный Microsoft LDAP SDK. Подробности смотрите на сайте АПР. Пример конфигурацииНиже приведен пример конфигурации, которая используется
# Включить пул соединений LDAP и общий # кеш памяти. Включить состояние кэша LDAP # обработчик. Требуется, чтобы mod_ldap и mod_authnz_ldap # быть загруженным. Измените «yourdomain.example.com» на # соответствует вашему домену. LDAPSharedCacheSize 500000 LDAPCacheEntries 1024 LDAPCacheTTL 600 LDAPopCacheEntries 1024 LDAPOPCacheTTL 600 <Расположение "/ldap-status"> SetHandler ldap-статус Требуется хост yourdomain.example.com Удовлетворить любой Основной тип авторизации AuthName "Защищено LDAP" AuthBasicProvider ldap AuthLDAPURL "ldap://127.0.0.1/dc=example,dc=com?uid?one" Требовать действительного пользователя </местоположение> Пул соединений LDAPСоединения LDAP объединяются от запроса к запросу. Это позволяет серверу LDAP оставаться подключенным и готовым к следующему запросу без необходимости отсоединения/подключения/повторного подключения. Преимущества в производительности аналогичны эффекту поддержки активности HTTP. На загруженном сервере возможно, что многие запросы будут пытаться одновременно получить доступ к одному и тому же соединению с сервером LDAP. Если используется соединение LDAP, Apache создаст новое соединение рядом с исходным. Это гарантирует, что пул соединений не станет узким местом. Нет необходимости вручную включать пул соединений в конфигурации Apache. Любой модуль, использующий этот модуль для доступа к службам LDAP, будет совместно использовать пул соединений. Соединения LDAP могут отслеживать учетные данные клиента ldap, используемые при привязке к серверу LDAP. Эти учетные данные могут быть предоставлены серверам LDAP, которые не разрешают анонимные привязки во время поиска ссылок. Для управления этой функцией см.
директивы LDAP-кэшДля повышения производительности Кэш поиска/привязкиПроцесс поиска, а затем привязки — самый трудоемкий аспект работы LDAP, особенно если каталог большой. Кэш поиска/привязки используется для кэширования всех поисков, которые привели к успешным привязкам. Отрицательные результаты ( то есть неудачные поиски или поиски, которые не привели к успешному связыванию) не кэшируются. Обоснование этого решения заключается в том, что соединения с недействительными учетными данными составляют лишь небольшой процент от общего числа подключений, поэтому, не кэшируя недействительные учетные данные, размер кэша уменьшается. Кэш поиска и привязки управляется директивами Кэши операцийВо время функций сравнения атрибутов и различающихся имен Обратите внимание, что при проверке членства в группе любые результаты сравнения подгрупп кэшируются для ускорения будущих сравнений подгрупп. Поведение обоих этих кешей управляется директивами Мониторинг кэша <Расположение "/сервер/кэш-информация"> SetHandler ldap-статус </местоположение> Извлекая URL-адрес Использование SSL/TLSВозможность создания соединений SSL и TLS с сервером LDAP определяется директивами
# Установите соединение SSL LDAP на порт 636. Требуется, чтобы # mod_ldap и mod_authnz_ldap должны быть загружены. Изменить # "yourdomain.example.com", чтобы соответствовать вашему домену. LDAPTrustedGlobalCert CA_DER "/certs/certfile.der" <Расположение "/ldap-status"> SetHandler ldap-статус Требуется хост yourdomain.example.com Удовлетворить любой Основной тип авторизации AuthName "Защищено LDAP" AuthBasicProvider ldap AuthLDAPURL "ldaps://127.0.0.1/dc=example,dc=com?uid?one" Требовать действительного пользователя </местоположение> # Установите соединение TLS LDAP на порт 389. Требуется, чтобы # mod_ldap и mod_authnz_ldap должны быть загружены. Изменить # "yourdomain.example.com", чтобы соответствовать вашему домену. LDAPTrustedGlobalCert CA_DER "/certs/certfile.der" <Расположение "/ldap-status"> SetHandler ldap-статус Требуется хост yourdomain.example.com Удовлетворить любой Основной тип авторизации AuthName "Защищено LDAP" AuthBasicProvider ldap AuthLDAPURL "ldap://127.0.0.1/dc=example,dc=com?uid?one" TLS Требовать действительного пользователя </местоположение> SSL/TLS-сертификатыРазличные SDK LDAP имеют совершенно разные методы настройки и обработки как сертификатов ЦС, так и сертификатов на стороне клиента. Если вы собираетесь использовать SSL или TLS, ВНИМАТЕЛЬНО прочтите этот раздел, чтобы понять различия между конфигурациями различных поддерживаемых наборов инструментов LDAP. Netscape/Mozilla/iPlanet SDKСертификаты ЦС указываются в файле с именем cert7.db. SDK не будет обращаться ни к одному серверу LDAP, сертификат которого не был подписан ЦС, указанным в этом файле. Если требуются клиентские сертификаты, необязательный файл key3.db может быть указан с необязательным паролем. При необходимости можно указать файл secmod. Эти файлы имеют тот же формат, что и веб-браузеры Netscape Communicator или Mozilla. Самый простой способ получить эти файлы — получить их из установки вашего браузера. Клиентские сертификаты указываются для каждого соединения с помощью директивы LDAPTrustedClientCert со ссылкой на «псевдоним» сертификата. Можно указать необязательный пароль для разблокировки закрытого ключа сертификата. SDK поддерживает только SSL. Попытка использовать STARTTLS вызовет ошибку при попытке связаться с сервером LDAP во время выполнения. # Указываем файл сертификата ЦС Netscape LDAPTrustedGlobalCert CA_CERT7_DB "/certs/cert7.db" # Укажите необязательный файл key3.db для поддержки клиентских сертификатов LDAPTrustedGlobalCert CERT_KEY3_DB "/certs/key3.db" # Указываем файл secmod, если требуется LDAPTrustedGlobalCert CA_SECMOD "/certs/secmod" <Расположение "/ldap-status"> SetHandler ldap-статус Требуется хост yourdomain.example.com Удовлетворить любой Основной тип авторизации AuthName "Защищено LDAP" AuthBasicProvider ldap LDAPTrustedClientCert CERT_NICKNAME <псевдоним> [пароль] AuthLDAPURL "ldaps://127.0.0.1/dc=example,dc=com?uid?one" Требовать действительного пользователя </местоположение> Новелл SDKДля правильной работы Novell SDK необходимо указать один или несколько сертификатов CA. Эти сертификаты могут быть указаны как двоичные файлы в кодировке DER или Base64 (PEM). Примечание. Сертификаты клиента указываются глобально, а не для каждого соединения, поэтому их необходимо указывать с помощью директивы LDAPTrustedGlobalCert, как показано ниже. Попытка установить клиентские сертификаты с помощью директивы LDAPTrustedClientCert приведет к регистрации ошибки при попытке подключения к серверу LDAP. SDK поддерживает как SSL, так и STARTTLS, задаваемые с помощью параметра LDAPTrustedMode. Если указан URL-адрес ldaps://, принудительно используется режим SSL, переопределите эту директиву. # Указываем два файла сертификата ЦС LDAPTrustedGlobalCert CA_DER "/certs/cacert1.der" LDAPTrustedGlobalCert CA_BASE64 "/certs/cacert2.pem" # Указываем файл сертификата клиента и ключ LDAPTrustedGlobalCert CERT_BASE64 "/certs/cert1.pem" LDAPTrustedGlobalCert KEY_BASE64 "/certs/key1.pem" [пароль] # Не используйте эту директиву, так как она выдаст ошибку #LDAPTrustedClientCert CERT_BASE64 "/certs/cert1.pem" SDK OpenLDAPДля корректной работы OpenLDAP SDK необходимо указать один или несколько сертификатов ЦС. Эти сертификаты могут быть указаны как двоичные файлы в кодировке DER или Base64 (PEM). Сертификаты центра сертификации и клиента могут быть указаны глобально (LDAPTrustedGlobalCert) или для каждого соединения (LDAPTrustedClientCert). Когда какие-либо настройки указываются для каждого соединения, глобальные настройки заменяются. Документация для SDK утверждает, что поддерживает как SSL, так и STARTTLS, однако STARTTLS, похоже, не работает на всех версиях SDK. Режим SSL/TLS можно задать с помощью параметра LDAPTrustedMode. Если указан URL-адрес ldaps://, принудительно используется режим SSL. В документации OpenLDAP отмечается, что поддержка SSL (ldaps://) устарела и заменена на TLS, хотя функциональность SSL все еще работает. # Указываем два файла сертификата ЦС LDAPTrustedGlobalCert CA_DER "/certs/cacert1.der" LDAPTrustedGlobalCert CA_BASE64 "/certs/cacert2.pem" <Расположение "/ldap-status"> SetHandler ldap-статус Требуется хост yourdomain.example.com LDAPTrustedClientCert CERT_BASE64 "/certs/cert1.pem" LDAPTrustedClientCert KEY_BASE64 "/certs/key1.pem" # Сертификаты CA изменены из-за клиентских сертификатов для каждого каталога LDAPTrustedClientCert CA_DER "/certs/cacert1.der" LDAPTrustedClientCert CA_BASE64 "/certs/cacert2.pem" Удовлетворить любой Основной тип авторизации AuthName "Защищено LDAP" AuthBasicProvider ldap AuthLDAPURL "ldaps://127.0.0.1/dc=example,dc=com?uid?one" Требовать действительного пользователя </местоположение> Солярис SDKSSL/TLS для собственных библиотек LDAP Solaris пока не поддерживается. При необходимости установите и используйте библиотеки OpenLDAP. Microsoft SDKНастройка сертификата SSL/TLS для собственных библиотек Microsoft LDAP выполняется в системном реестре, и директивы конфигурации не требуются. И SSL, и TLS поддерживаются при использовании формата URL-адреса ldaps:// или при использовании соответствующей директивы LDAPTrustedMode. Примечание. Состояние поддержки клиентских сертификатов для этого инструментария пока неизвестно. Директива LDAPCacheEntries
Задает максимальный размер основного кэша LDAP. Этот кеш содержит успешный поиск/связку. Установите его на 0, чтобы отключить кэширование поиска/привязки. Размер по умолчанию — 1024 кэшированных поиска. Директива LDAPCacheTTL
Указывает время (в секундах), в течение которого элемент в кэше поиска/привязки остается действительным. Значение по умолчанию — 600 секунд (10 минут). Директива LDAPConnectionPoolTTL
Указывает максимальный срок в секундах, в течение которого объединенное в пул соединение LDAP может оставаться бездействующим и по-прежнему доступным для использования. Соединения очищаются, когда они нужны в следующий раз, а не асинхронно. Значение 0 означает, что соединения никогда не будут сохраняться в пуле внутренних соединений. Значение по умолчанию -1 и любое другое отрицательное значение позволяют повторно использовать соединения любого возраста. По соображениям производительности эталонное время, используемое этой директивой, основано на том, когда соединение LDAP возвращается в пул, а не на времени последнего успешного ввода-вывода с сервером LDAP. Начиная с версии 2.4.10, введены новые меры, позволяющие избежать завышения эталонного времени из-за попаданий в кэш или медленных запросов. Во-первых, эталонное время не обновляется, если не требуются внутренние подключения LDAP. Во-вторых, эталонное время использует время получения HTTP-запроса, а не время выполнения запроса. Этот тайм-аут по умолчанию измеряется секундами, но принимает суффиксы для миллисекунд (мс), минут (мин) и часов (ч). Директива LDAPConnectionTimeout
Эта директива настраивает параметр LDAP_OPT_NETWORK_TIMEOUT (или LDAP_OPT_CONNECT_TIMEOUT) в базовой клиентской библиотеке LDAP, если она доступна. Обычно это значение определяет, как долго клиентская библиотека LDAP будет ожидать завершения соединения TCP с сервером LDAP. Если соединение не установлено в течение периода ожидания, либо будет возвращена ошибка, либо клиентская библиотека LDAP попытается подключиться к дополнительному серверу LDAP, если он указан (через список имен хостов, разделенных пробелами, в файле )
Значение по умолчанию — 10 секунд, если клиентская библиотека LDAP, связанная с сервером, поддерживает параметр LDAP_OPT_NETWORK_TIMEOUT. LDAPConnectionTimeout доступен только в том случае, если клиентская библиотека LDAP, связанная с сервером, поддерживает параметр LDAP_OPT_NETWORK_TIMEOUT (или LDAP_OPT_CONNECT_TIMEOUT), а окончательное поведение полностью определяется клиентской библиотекой LDAP.Директива LDALibraryDebug
Включает специфичные для SDK параметры отладки LDAP, которые обычно заставляют LDAP SDK регистрировать подробные сведения о трассировке в основном журнале ошибок Apache. Сообщения трассировки из LDAP SDK предоставляют подробные сведения, которые могут быть полезны при отладке проблем с подключением к внутренним серверам LDAP. Этот параметр можно настроить, только если Apache HTTP Server связан с LDAP SDK, который реализует Зарегистрированная информация, скорее всего, будет содержать учетные данные в виде открытого текста, которые используются или проверяются аутентификацией LDAP, поэтому следует соблюдать осторожность при защите и очистке журнала ошибок при использовании этой директивы. Директива LDAPopCacheEntries
Указывает количество записей, Директива LDAPOPCacheTTL
Указывает время (в секундах), в течение которого записи в кэше операций остаются действительными. По умолчанию 600 секунд. Директива LDAPReferralHopLimit
Эта директива, если она разрешена директивой Поддержка этого настраиваемого параметра редко встречается в LDAP SDK. Директива LDAPReferrals
Некоторые серверы LDAP делят свой каталог между несколькими доменами и используют ссылки для направления клиента при пересечении границы домена. Это похоже на перенаправление HTTP. Клиентские библиотеки LDAP могут или не могут преследовать ссылки по умолчанию. Эта директива явно настраивает отслеживание ссылок в базовом пакете SDK.
Директива Директива LDAPRetries
Сервер будет повторять неудачные запросы LDAP до
Ошибки LDAP, такие как тайм-ауты и отказы в подключении, можно повторить. Директива LDAPRetryDelay
Если Ошибки LDAP, такие как тайм-ауты и отказы в подключении, можно повторить. Директива LDAPSharedCacheFile
Задает путь к каталогу и имя файла кэша общей памяти. Если не установлено, будет использоваться анонимная общая память, если платформа поддерживает это. Директива LDAPSharedCacheSize
Указывает количество байтов, выделяемых для кэша общей памяти. По умолчанию 500кб. Если установлено значение 0, кэширование общей памяти не будет использоваться, и каждый процесс HTTPD будет создавать свой собственный кэш. Директива LDAPTimeout
Эта директива настраивает время ожидания для операций привязки и поиска, а также параметр LDAP_OPT_TIMEOUT в базовой клиентской библиотеке LDAP, если он доступен. По истечении тайм-аута httpd повторит попытку, если существующее соединение было автоматически отключено брандмауэром. Однако производительность будет намного выше, если брандмауэр настроен на отправку пакетов TCP RST, а не на отбрасывание пакетов без вывода сообщений. Тайм-ауты для операций сравнения ldap требуют SDK с LDAP_OPT_TIMEOUT, например OpenLDAP >= 2.4.4. Директива LDAPTrustedClientCert
Он указывает путь к каталогу, имя файла или псевдоним сертификата клиента для каждого соединения, используемого при установлении соединения SSL или TLS с сервером LDAP. Различные местоположения или каталоги могут иметь свои собственные независимые настройки сертификата клиента. Некоторые наборы инструментов LDAP (в частности, Novell) не поддерживают клиентские сертификаты для каждого соединения и выдают ошибку при подключении к серверу LDAP, если вы попытаетесь использовать эту директиву (вместо этого используйте директиву LDAPTrustedGlobalCert для клиентских сертификатов Novell — см. руководство по сертификатам SSL/TLS выше). для подробностей). Тип определяет тип устанавливаемого параметра сертификата в зависимости от используемого инструментария LDAP. Поддерживаемые типы:
Директива LDAPTrustedGlobalCert
Он указывает путь к каталогу и имя файла доверенных сертификатов ЦС и/или общесистемных клиентских сертификатов, которые
Директива LDAPTrustedMode
Поддерживаются следующие режимы:
Не все наборы инструментов LDAP поддерживают все вышеперечисленные режимы. Во время выполнения будет зарегистрировано сообщение об ошибке, если режим не поддерживается, и соединение с сервером LDAP завершится ошибкой. Если указан URL-адрес ldaps://, режим становится SSL, а параметр LDAPTrustedMode игнорируется. Директива LDAPVerifyServerCert
Указывает, следует ли принудительно проверять сертификат сервера при установке соединения SSL с сервером LDAP. Пункты: 85 86 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 163 164 165 166 167 168 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 203 204 205 206 207 208 209 210 211 212 213 |