Активируем LDAP over SSL (LDAPS) в Windows Server 2012 R2
По-умолчанию в Active Directory трафик по протоколу LDAP между контроллерами домена и клиентами не шифруется, т.е. данные по сети передаются в открытом виде. Потенциально это означает, что злоумышленник с помощью снифера пакетов может прочитать эти данные. Для стандартной среды Windows среды это в общем-то не критично, но ограничивает возможности разработчиков сторонних приложений, которые используют LDAP.
Так, например, операция смены пароля должна обязательно осуществляться через безопасный канал (например Kerberos или SSL/TLS). Это означает, что например, с помощью функции-php, обеспечивающей работу с AD по протоколу LDAP изменить пароль пользователя в домене не удастся.
Защитить данные, передаваемых по протоколу LDAP между клиентом и контроллером домена можно с помощью SSL версии протокола LDAP – LDAPS, который работает по порту 636 (LDAP «живет» на порту 389). Для этого на контроллере домена необходимо установить специальный SSL сертификат. Сертификат может быть как сторонним, выданным 3-ей стороной (например, Verisign), самоподписанным или выданным корпоративным центром сертификации.
В этой статье мы покажем, как с помощью установки сертификата задействовать LDAPS (LDAP over Secure Sockets Layer) на котроллере домена под управление Windows Server 2012 R2. При наличии требуемого сертификата служба LDAP на контроллере домена может устанавливать SSL соединения для передачи трафика LDAP и трафика сервера глобального каталога (GC).
Отметим, что LDAPS преимущественно используется сторонними приложениями (имеются в виде не-Microsoft клиенты) в целях защиты передаваемых по сети данных (обеспечить невозможности перехвата имена и паролей пользователей и других приватных данных).
Предположим, в вашей инфраструктуре уже развернут корпоративный удостоверяющий сервер Certification Authority (CA). Это может быть как полноценная инфраструктура PKI, так и отдельной-стоящий сервер с ролью Certification Authority.
На севере с ролью Certification Authority запустите консоль Certification Authority Management Console, выберите раздел шаблонов сертификатов (Certificate Templates ) и в контекстном меню выберите Manage.
Найдите шаблон Kerberos Authentication certificate и создайте его копию, выбрав в меню Duplicate Template.
На вкладке General переименуйте шаблон сертификата в LDAPoverSSL, укажите период его действия и опубликуйте его в AD (Publish certificate in Active Directory).
На вкладке Request Handling поставьте чекбокс у пункта Allow private key to be exported и сохраните шаблон.
На базе созданного шаблона, опубликуем новый тип сертификата. Для этого, в контекстном меню раздела Certificate Templates выберем пункт New -> Certificate Template to issue.
Из списка доступных шаблонов выберите LDAPoverSSL и нажмите OK.
На контроллере домена, для которого планируется задействовать LDAPS, откройте оснастку управления сертификатами и в хранилище сертификатов Personal запросим новый сертификат (All Tasks -> Request New Certificate).
В списке доступных сертификатов выберите сертификат LDAPoverSSL и нажмите Enroll (выпустить сертификат).
Следующее требование – необходимо, чтобы контроллер домена и клиенты, которые будут взаимодействовать через LDAPS доверяли удостоверяющему центру (CA), который выдал сертификат для контроллера домена.
Если это еще не сделано, экспортируем корневой сертификат удостоверяющего центра в файл, выполнив на сервере с ролью Certification Authority команду:
certutil -ca.cert ca_name.cer
А затем добавьте экспортированный сертификат в контейнере сертификатов Trusted Root Certification Authorities хранилища сертификатов на клиенте и контроллере домена. Сделать это можно через вручную через оснастку управления сертификатами, через GPO или из командной строки (подробнее здесь).
certmgr.exe -add C:\ca_name.cer -s -r localMachine ROOT
Необходимо перезапустить службы Active Directory на контроллере домена, либо целиком перезагрузить DC.
Осталось протестировать работу по LDAPS. Для этого на клиенте запустим утилиту ldp.exe и в меню выбираем Connection-> Connect->Укажите полное (FQDN) имя контроллера домена, выберите порт 636 и отметьте SSL -> OK. Если все сделано правильно, подключение должно установиться.
Включить LDAP через SSL со сторонним органом сертификации
В этой статье описывается, как включить протокол LDAP через протокол SSL с помощью стороннее центра сертификации.
Исходная версия продукта: Windows Server 2012 R2
Исходный номер КБ: 321051
Аннотация
LDAP используется для чтения и записи в Active Directory. По умолчанию трафик LDAP передается незащищаемо. Вы можете сделать трафик LDAP конфиденциальным и безопасным с помощью технологии SSL/Transport Layer Security (TLS). Вы можете включить LDAP через SSL (LDAPS), установив правильно отформатированный сертификат либо из ЦС Майкрософт, либо из сторонного ЦС в соответствии с рекомендациями в этой статье.
Пользовательский интерфейс для настройки LDAPS не существует. Установка действительного сертификата на контроллере домена позволяет службе LDAP прослушивать И автоматически принимать SSL-подключения для трафика LDAP и глобального каталога.
Требования к сертификату LDAPS
Чтобы включить LDAPS, необходимо установить сертификат, отвечающий следующим требованиям:
Сертификат LDAPS расположен в хранилище личных сертификатов локального компьютера (программным образом называется хранилищем сертификатов MY компьютера).
Закрытый ключ, который соответствует сертификату, присутствует в хранилище локального компьютера и правильно связан с сертификатом. Закрытый ключ не должен иметь включенную защиту с закрытым ключом.
Расширение расширенного использования ключей включает идентификатор объекта проверки подлинности сервера (1.3.6.1.5.5.7.3.1) (также известный как OID).
Полное доменное имя Active Directory контроллера домена (например, DC01. DOMAIN.COM) должны отображаться в одном из следующих мест:
- Общее имя (CN) в поле «Тема».
- Запись DNS в расширении «Альтернативное имя субъекта».
Сертификат был выдан ЦС, который доверяет контроллеру домена и клиентам LDAPS. Доверие устанавливается путем настройки клиентов и сервера на доверие корневому ЦС, которому цепочек выдающих ЦС.
Используйте поставщика служб шифрования Schannel (CSP) для создания ключа.
Создание запроса на сертификат
Для создания запроса SSL-сертификата может использоваться любая программа или приложение, создающая допустимый запрос #10 PKCS. Используйте Certreq для формирования запроса.
Certreq.exe требуется файл текстовых инструкций для создания соответствующего запроса сертификата X.509 для контроллера домена. Этот файл можно создать с помощью предпочитаемого текстового редактора ASCII. Сохраните файл как INF-файл в любой папке на жестком диске.
Чтобы запросить сертификат проверки подлинности сервера, подходящий для LDAPS, выполните следующие действия.
Создайте INF-файл. Ниже приводится пример INF-файла, который можно использовать для создания запроса на сертификат.
Subject = «CN= » ; replace with the FQDN of the DC
KeySpec = 1
KeyLength = 1024
; Может быть 1024, 2048, 4096, 8192 или 16384.
; Более крупные размеры ключей являются более безопасными, но имеют
; более сильное влияние на производительность.
Exportable = TRUE
MachineKeySet = TRUE
SMIME = False
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = «Microsoft RSA SChannel Cryptographic Provider»
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0
OID=1.3.6.1.5.5.7.3.1; это для проверки подлинности сервера
Cut and paste the sample file into a new text file named Request.inf. В запросе у вас есть полное DNS-имя контроллера домена.
Некоторым сторонним органам сертификации могут потребоваться дополнительные сведения в параметре Subject. К таким сведениям относятся адрес электронной почты (E), подразделение, организация (O), город или город (L), область или край (S), а также страна или регион (C). Эти сведения можно примедить к имени субъекта (CN) в файле Request.inf. Например:
Subject=»E= admin@contoso.com , CN= , OU=Servers, O=Contoso, L=Redmond, S=Washington, C=US».
Создайте файл запроса с помощью следующей команды в командной области:
Создается новый файл Request.req. Это файл запроса в коде base64.
Отправьте запрос в ЦС. Вы можете отправить запрос в ЦС Майкрософт или сторонний ЦС.
Извлеките выданный сертификат и сохраните его как Certnew.cer в той же папке, что и файл запроса, выполнив следующие действия:
- Создайте файл Certnew.cer.
- Откройте файл в Блокноте, в paste the encoded certificate into the file, and then save the file.
Сохраненный сертификат должен быть закодирован как base64. Некоторые сторонние ЦС возвращают выданный сертификат запрашиваемой стороне в виде текста в коде base64 в сообщении электронной почты.
Примите выданный сертификат, выдав следующую команду в командной подсказке:
Чтобы убедиться, что сертификат установлен в личном хранилище компьютера, с помощью следующих действий:
- Запустите консоль управления (MMC).
- Добавьте оснастку «Сертификаты», которая управляет сертификатами на локальном компьютере.
- Раз развернуть сертификаты (локальный компьютер), развернуть личные и затем развернуть сертификаты. Новый сертификат должен существовать в личном хранилище. В диалоговом окне «Свойства сертификата» отображается цель проверки подлинности сервера. Этот сертификат выдан полному имени компьютера.
Перезапустите контроллер домена.
Дополнительные сведения о создании запроса на сертификат см. в следующем документе о регистрации и управлении расширенными сертификатами. Чтобы просмотреть этот документ, см. дополнительные действия по регистрации сертификатов и управлению ими.
Проверка подключения LDAPS
После установки сертификата выполните следующие действия, чтобы убедиться, что LDAPS включен:
Запустите средство администрирования Active Directory (Ldp.exe).
В меню «Подключение» щелкните «Подключиться».
Введите имя контроллера домена, к которому нужно подключиться.
Введите 636 в качестве номера порта.
Нажмите кнопку ОК.
Данные RootDSE должны печататься в правой области, что указывает на успешное подключение.
Возможные проблемы
Запуск расширенного запроса TLS
Связь LDAPS происходит через порт TCP 636. LDAPS-связь с сервером глобального каталога происходит по TCP 3269. При подключении к портам 636 или 3269 SSL/TLS согласовывалось до обмена трафиком LDAP.
Schannel, поставщик Microsoft SSL, выбирает первый действительный сертификат, который он находит в хранилище локального компьютера. Если в хранилище локального компьютера доступно несколько действительных сертификатов, Schannel может не выбрать правильный сертификат.
Проблема с кэшом сертификатов SSL до sp3
Если существующий сертификат LDAPS заменен другим сертификатом в процессе обновления или в связи с тем, что выдающая ЦС изменилась, сервер необходимо перезапустить для Schannel, чтобы использовать новый сертификат.
Улучшения
Исходной рекомендацией в этой статье было поместить сертификаты в личное хранилище локального компьютера. Хотя этот параметр поддерживается, вы также можете поместить сертификаты в хранилище личных сертификатов службы NTDS в Windows Server 2008 и более поздних версиях доменных служб Active Directory (AD DS). Дополнительные сведения о добавлении сертификата в хранилище личных сертификатов службы NTDS см. в справке по событию 1220 — LDAP через SSL.
AD DS ищет сертификаты в этом хранилище через хранилище локального компьютера. Это упрощает настройку AD DS для использования нужного сертификата. Это возможно из-за того, что в личном хранилище локальных компьютеров может быть несколько сертификатов, и трудно предсказать, какой из них выбран.
AD DS обнаруживает, когда новый сертификат перенагружается в хранилище сертификатов, а затем запускает обновление SSL-сертификата без перезапуска AD DS или перезапуска контроллера домена.
Новую операцию rootDse с именем renewServerCertificate можно использовать для запуска AD DS вручную обновления SSL-сертификатов без перезапуска AD DS или перезапуска контроллера домена. Этот атрибут можно обновить с помощью adsiedit.msc или импортировать изменения в формате обмена каталогами LDAP (LDIF) с помощью ldifde.exe. Дополнительные сведения об использовании LDIF для обновления этого атрибута см. в renewServerCertificate.
Наконец, если контроллер домена Windows Server 2008 или более поздней версии находит в своем хранилище несколько сертификатов, он автоматически выбирает сертификат, срок действия которого в будущем будет больше всего. Затем, если срок действия текущего сертификата приближается к концу, вы можете выбросить его в хранилище, и AD DS автоматически переключится на его использование.
Все это работает для AD DS Windows Server 2008 и 2008 служб Active Directory облегченного каталога (AD LDS). Для AD LDS поместите сертификаты в личное хранилище сертификатов для службы, которая соответствует экземпляру AD LDS, а не для службы NTDS.