Включение LDAP через SSL со сторонним центром сертификации
В этой статье описано, как включить протокол LDAP по протоколу SSL с помощью стороннего центра сертификации.
Исходная версия продукта: Windows Server 2012 R2
Исходный номер статьи базы знаний: 321051
Аннотация
LDAP используется для чтения и записи в Active Directory. По умолчанию трафик LDAP передается в незащищенном виде. Вы можете сделать трафик LDAP конфиденциальным и безопасным с помощью технологии SSL (SSL)/TLS (Transport Layer Security). Вы можете включить LDAP через SSL (LDAPs), устанавливая правильный сертификат из центра сертификации (ЦС) Майкрософт или стороннего центра сертификации в соответствии с рекомендациями, описанными в этой статье.
Пользовательский интерфейс для настройки LDAPs отсутствует. Установка действительного сертификата на контроллере домена позволяет службе LDAP прослушивать и автоматически принимать подключения SSL для трафика LDAP и глобального каталога.
Требования к сертификату LDAPs
Чтобы включить LDAPs, необходимо установить сертификат, который соответствует следующим требованиям:
Сертификат LDAPs расположен в личном хранилище сертификатов локального компьютера (программным путем называется мое хранилище сертификатов компьютера).
Закрытый ключ, соответствующий сертификату, присутствует в хранилище локального компьютера и правильно связан с сертификатом. Закрытый ключ не должен включать усиленную защиту закрытого ключа.
Расширение расширенного использования ключа включает идентификатор объекта проверки подлинности сервера (1.3.6.1.5.5.7.3.1) (также известный как OID).
Полное доменное имя Active Directory контроллера домена (например, DC01. DOMAIN.COM) должен находиться в одном из следующих мест:
- Общее имя (CN) в поле Subject.
- Запись DNS в расширении альтернативного имени субъекта.
Сертификат выдан центром сертификации, которому доверяет контроллер домена и клиенты LDAPs. Доверие устанавливается путем настройки клиентов и сервера, чтобы доверять корневому центру сертификации, на который подается цепочка выдающего ЦС.
Для создания ключа необходимо использовать поставщика служб шифрования Schannel (CSP).
Создание запроса на сертификат
Любая служебная программа или приложение, создающая действительный запрос PKCS #10, можно использовать для создания запроса SSL-сертификата. Используйте certreq, чтобы сформировать запрос.
Для Certreq.exe требуется текстовый файл с инструкциями для создания соответствующего запроса сертификата X. 509 для контроллера домена. Вы можете создать этот файл с помощью предпочтительного текстового редактора ASCII. Сохраните файл как INF-файл в любую папку на жестком диске.
Чтобы запросить сертификат проверки подлинности сервера, подходящий для LDAPs, выполните указанные ниже действия.
Создайте INF-файл. Ниже приведен пример INF-файла, который можно использовать для создания запроса на сертификат.
Подпись = «$Windows NT $
Subject = «CN = «; Замените на полное доменное имя контроллера домена.
Кэйспек = 1
Кэйленгс = 1024
; Возможные значения: 1024, 2048, 4096, 8192 или 16384.
; Более крупные размеры ключа более безопасны, но
; более высокое влияние на производительность.
Экспортируемый = TRUE
Мачинекэйсет = TRUE
SMIME = false
Приватекэйарчиве = FALSE
Усерпротектед = FALSE
Усиксистингкэйсет = FALSE
ProviderName = «Microsoft RSA SChannel Cryptographic Provider»
ProviderType = 12
RequestType = PKCS10
Кэйусаже = 0xA0
OID = 1.3.6.1.5.5.7.3.1; используется для проверки подлинности сервера
Скопируйте и вставьте пример файла в новый текстовый файл с именем request. INF. Укажите полное DNS-имя контроллера домена в запросе.
Для некоторых сторонних центров сертификации могут потребоваться дополнительные сведения в параметре subject. Такие сведения включают адрес электронной почты (E), подразделение (OU), организацию (O), местную или страну (L), область или край, а также страну или регион (C). Эту информацию можно добавить в имя субъекта (CN) в файле Request. INF. Пример:
Subject = «E = admin@contoso.com , CN = , OU = Servers, O = Contoso, L = Redmond, S = Вашингтон, C = US».
Создайте файл запроса. Для этого введите в командной строки следующую команду и нажмите клавишу ВВОД:
Создается новый файл с именем request. req . Это файл запроса в кодировке Base64.
Отправьте запрос в центр сертификации. Вы можете отправить запрос в центр сертификации Майкрософт или в сторонний центр сертификации.
Извлеките сертификат и сохраните его как Цертнев. cer в той же папке, где находится файл запроса. Для этого выполните следующие действия:
- Создайте новый файл с именем цертнев. cer.
- Откройте файл в блокноте, вставьте закодированный сертификат в файл и сохраните файл.
Сохраненный сертификат должен быть закодирован в формате Base64. Некоторые сторонние ЦС возвращают выданный сертификат запрашивающему стороне в виде текста с кодировкой base64 в сообщении электронной почты.
Примите выданный сертификат. Для этого введите в командной строки следующую команду и нажмите клавишу ВВОД:
Убедитесь, что сертификат установлен в личном хранилище компьютера. Для этого выполните следующие действия:
- Запустите консоль управления (MMC).
- Добавьте оснастку «сертификаты», которая управляет сертификатами на локальном компьютере.
- Разверните узел Сертификаты (локальный компьютер), выберите пункт Личные, а затем разверните узел Сертификаты. Новый сертификат должен существовать в личном хранилище. В диалоговом окне Свойства сертификата отображается предполагаемое назначение Проверка подлинности сервера. Этот сертификат выдан полным именем узла компьютера.
Перезапустите контроллер домена.
Дополнительные сведения о создании запроса на сертификат можно найти в приведенном ниже техническом документе о возможностях регистрации и управления сертификатами. Чтобы просмотреть этот технический документ, ознакомьтесь со статьей Расширенный подача заявок и управление сертификатами.
Проверка подключения LDAPs
После установки сертификата выполните следующие действия, чтобы проверить, включены ли LDAPs.
Запустите средство администрирования Active Directory (Ldp.exe).
В меню Подключение выберите команду подключить.
Введите имя контроллера домена, к которому требуется подключиться.
Введите 636 в качестве номера порта.
Нажмите кнопку ОК.
На правой панели должна быть напечатана информация RootDSE, указывающая на успешность подключения.
Возможные проблемы
Запуск расширенного запроса TLS
Связь LDAPs выполняется через порт TCP 636. LDAP-подключения к серверу глобального каталога выполняются по протоколу TCP 3269. При подключении к портам 636 или 3269 протокол SSL/TLS согласовывается перед обменом трафика LDAP.
SChannel, поставщик SSL (Майкрософт), выбирает первый действительный сертификат, найденный в хранилище локального компьютера. Если в хранилище локального компьютера доступно несколько действительных сертификатов, Schannel может не выбрать правильный сертификат.
Ошибка кэширования SSL-сертификата до SP3
Если существующий сертификат LDAPs заменен другим сертификатом (с помощью процесса продления или после изменения выдающего ЦС), необходимо перезапустить сервер для безопасного канала SChannel, чтобы использовать новый сертификат.
Улучшения
Исходным рекомендациям в этой статье было помещение сертификатов в личное хранилище локального компьютера. Несмотря на то что этот параметр поддерживается, можно также размещать сертификаты в личном хранилище сертификатов службы NTDS в Windows Server 2008 и последующих версиях доменных служб Active Directory (AD DS). Дополнительные сведения о том, как добавить сертификат в хранилище личных сертификатов службы NTDS, приведены в статье Event ID 1220-LDAP over SSL.
Службы AD DS предвидят сертификаты в этом хранилище в хранилище локального компьютера. Это упрощает настройку AD DS для использования сертификата, который необходимо использовать. Это связано с тем, что в личном хранилище локальных компьютеров может быть несколько сертификатов, и может быть сложно предсказать, какой из них выбран.
AD DS определяет, когда новый сертификат перемещается в хранилище сертификатов, а затем запускает обновление SSL-сертификата без необходимости перезапуска AD DS или перезапуска контроллера домена.
Новая операция rootDse с именем Реневсерверцертификате можно использовать для запуска AD DS вручную для обновления SSL-сертификатов без необходимости перезапуска AD DS или перезапуска контроллера домена. Этот атрибут можно обновить с помощью ADSIEdit. msc или путем импорта изменений в формате обмена LDAP Directory (LDIF) с помощью ldifde.exe. Дополнительные сведения об использовании LDIF для обновления этого атрибута содержатся в разделе реневсерверцертификате.
Наконец, если контроллер домена Windows Server 2008 или более поздней версии находит в хранилище несколько сертификатов, он автоматически выбирает сертификат, срок действия которого в будущем будет более поздней. Затем, если текущий сертификат приближается к сроку действия, можно удалить заменяющий сертификат в хранилище, а AD DS автоматически переключаться на его использование.
Все эти действия для Windows Server 2008 AD DS и для служб Active Directory облегченного доступа к каталогам 2008 (AD LDS). Для AD LDS поместите сертификаты в хранилище личных сертификатов для службы, соответствующей экземпляру AD LDS, а не к службе NTDS.
Активируем 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. Если все сделано правильно, подключение должно установиться.









