настройка LDAPS

Fedor

Активный участник
11.05.2018
331
20
18
Добрый день! Как настроить LDAPS на windows server 2019 и выпустить сертификаты ?
 
Администрирование сервисов
Настройка LDAPS на контроллере домена выполняется не через специальный интерфейс, а путем установки корректного SSL-сертификата в хранилище сервера. После установки сертификата служба LDAP автоматически начнет прослушивать защищенные порты (636 и 3269) .


Требования к сертификату LDAPS

Для успешной работы сертификат должен строго соответствовать требованиям:

| Требование | Необходимое значение |
| :--- | :--- |
| **Расположение** | Личное хранилище **локального компьютера** (`cert:\LocalMachine\My`) |
| **Приватный ключ** | Должен присутствовать на том же компьютере, "Усиленная защита закрытого ключа" должна быть **отключена** |
| **Назначение ключа** | **Проверка подлинности сервера** (OID `1.3.6.1.5.5.7.3.1`) |
| **Имя субъекта** | **CN** (Common Name) или **Subject Alternative Name** (SAN) должен содержать **FQDN** контроллера домена (например, `dc01.contoso.com`) |
| **Криптопровайдер** | Сгенерирован с помощью `Microsoft RSA SChannel Cryptographic Provider` |
| **Цепочка доверия** | Центр сертификации (CA), выдавший сертификат, должен быть доверенным для **самого контроллера домена** и всех **клиентов**, которые будут подключаться по LDAPS |

> **Важно:** Хранилище `NTDS` имеет более высокий приоритет, чем личное хранилище компьютера. Если в нем есть сертификат, служба будет использовать его .


Способ 1: Инфраструктура открытых ключей (PKI) и центр сертификации Microsoft (Рекомендуемый)

Этот способ предпочтительнее в корпоративной среде, так как позволяет централизованно управлять сертификатами через групповые политики .

Шаг 1: Создание файла запроса (.inf)

На контроллере домена создайте текстовый файл `request.inf` со следующим содержимым. Это шаблон, в который нужно подставить ваши данные :

ini
[Version]
Signature="$Windows NT$

[NewRequest]
Subject = "CN=<FQDN_вашего_DC>" ; Например: CN=dc01.contoso.com
KeySpec = 1
KeyLength = 2048 ; Рекомендуемый размер ключа
Exportable = FALSE ; Для безопасности рекомендуется FALSE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0

[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; OID для Server Authentication

Шаг 2: Генерация запроса на сертификат

Выполните в командной строке от имени администратора следующую команду. Будет создан файл `request.req` — ваш запрос в Центр сертификации :

certreq -new request.inf request.req

Шаг 3: Отправка запроса в Центр Сертификации

Отправьте содержимое файла `request.req` в корпоративный Центр сертификации (например, через веб-интерфейс CertSrv или оснастку MMC).

Шаг 4: Установка полученного сертификата
После того как CA выдаст сертификат (в формате Base-64), сохраните его, например, как `certnew.cer`, и выполните команду для его установки :

certreq -accept certnew.cer

Способ 2: Самозаверяющий сертификат (для тестовой среды)

Этот метод подходит для небольших или тестовых сред, где нет корпоративного CA. Однако все клиенты, подключающиеся к такому DC, не будут доверять этому сертификату, что может потребовать ручной настройки на каждом из них .

Шаг 1: Создание сертификата через PowerShell

Запустите PowerShell от имени администратора и выполните команду. Замените `dc01.contoso.com` и `dc01` на FQDN и имя вашего контроллера домена :

New-SelfSignedCertificate -DnsName dc01.contoso.com, dc01 -CertStoreLocation cert:\LocalMachine\My

Шаг 2: Добавление сертификата в доверенные корневые центры

Чтобы контроллер домена доверял сам себе, скопируйте созданный сертификат в хранилище "Доверенные корневые центры сертификации":
1. Запустите `certlm.msc`.
2. Перейдите в **Личные -> Сертификаты**.
3. Найдите ваш новый сертификат (по FQDN), скопируйте его.
4. Перейдите в **Доверенные корневые центры сертификации -> Сертификаты** и вставьте его туда .

> **Предупреждение:** Для работы с реальными клиентами (серверами, рабочими станциями) необходимо, чтобы **корневой сертификат вашего тестового CA** был добавлен в доверенные на всех этих клиентах.

Проверка и устранение неполадок
Проверка подключения

1. **Перезагрузите** контроллер домена. Это гарантирует, что служба Schannel начнет использовать новый сертификат .
2. **Используйте утилиту LDP.exe** (входит в состав средств удаленного администрирования сервера) :
- Запустите `ldp.exe`.
- В меню **Connection** выберите **Connect**.
- В поле **Server** введите **FQDN** контроллера домена.
- В поле **Port** введите **636**.
- Нажмите **OK**.

При успешном подключении в правой части окна вы увидите информацию о корне дерева каталога (RootDSE). Ошибка `0x51` (Connection failed) явно указывает на проблему с сертификатом .

Возможные проблемы

- **Выбор не того сертификата:** Если в хранилище `My` есть несколько валидных сертификатов с OID "Проверка подлинности сервера", Schannel автоматически выберет тот, у которого **позже дата истечения**. Это может вызвать неожиданные проблемы, если клиенты не доверяют новому сертификату . Решение — удалить лишние сертификаты или перенести их в другие хранилища.
- **Проблемы с цепочкой:** Убедитесь, что корневой сертификат CA, выдавший сертификат для DC, находится в хранилище **"Доверенные корневые центры сертификации"** на всех клиентах.
- **Файрвол:** Убедитесь, что TCP-порты **636** (LDAPS) и **3269** (LDAPS глобального каталога) открыты на брандмауэре контроллера домена .
 
Последнее редактирование: