Как правило, аутентификация контроллера домена в среде Windows представляет собой стандартную задачу. Однако, в некоторых ситуациях эта типовая процедура может быть осложнена необходимостью одновременного использования двух сертификатов для различных сервисов. Данная проблема может возникать, к примеру, если сервер должен предоставлять один сертификат пользователям домена, а другой – для сервисов.
Схожая проблема возникла в одном из наших проектов, где заказчику необходимо было организовать аутентификацию пользователей в домене Microsoft Windows по сертификатам ГОСТ. Обычно подобные задачи решаются путем использования специализированного средства компании «КРИПТО-ПРО», а именно «КриптоПро Winlogon». Данный продукт существует на рынке достаточно давно и максимально проработан, но иногда могут возникать непредвиденные сложности при его внедрении, с которыми нашей компании и пришлось столкнуться. Для его функционирования необходимо соответствующим образом настроить рабочую станцию, домен и контроллеры домена. Одним из требований при настройке контроллера домена в данном случае является выпуск сертификата на ГОСТ.
В случае с нашим заказчиком возникла ситуация, при которой для доступа к контроллеру домена используется, кроме протокола LDAP, еще и LDAP через SSL (LDAPS) с использованием уже установленного на контроллере сертификата RSA.
Небольшое отступление: по умолчанию трафик LDAP не защищен, что предоставляет возможность осуществлять мониторинг трафика между LDAP–клиентом и сервером. Чтобы обеспечить передачу трафика LDAP в безопасном режиме, необходимо использовать технологию SSL/TLS, сокращенно такая технология называется LDAPS.
LDAPS рекомендуется использовать в следующих случаях:
Таким образом, в нашей ситуации для работы LDAP over SSL/TLS (LDAPS) требуется установить сертификат на контроллер домена. Для активации LDAPS необходимо установить доверенный сертификат, выданный центром сертификации (которому доверяют контроллер домена и клиенты LDAPS) в хранилище сертификатов локального компьютера.
В связи с этим и возник вопрос совместного использования двух сертификатов, причем на различных криптографических алгоритмах при условии использования решения КриптоПро Winlogon, которое не предполагает одновременного использования двух сертификатов на контроллере домена.
Комментарий из инструкции:
Так как данная проблема не является распространенной, и, учитывая, что добавляется российская криптография, то для ее решения пришлось искать новые подходы. Изучение инструкций и тематических форумов ответа не дало. В итоге, чтобы решить данную задачу, пришлось углубиться в ее изучение и разобраться, каким именно образом контроллер домена использует сертификаты.
Итак, как же работает выбор сертификата контроллером домена?
При необходимости выбрать сертификат, контроллер обращается к хранилищу сертификатов локального компьютера и использует сертификат из этого хранилища. В большинстве случаев там будет один сертификат, и тогда проблем не возникнет. Если же в хранилище находится больше одного сертификата, то контроллер возьмет первый валидный сертификат для аутентификации сервера. Таким образом, использование одновременно двух (или более) сертификатов для различных целей в хранилище нежелательно.
Однако в Windows Server существует возможность легитимного использования нескольких сертификатов. Для этого используется отдельное хранилище Active Directory Domain Services (NTDS\Personal), в котором хранится сертификат для доступа по LDAPS.
В таком случае процесс выбора сертификата можно описать более подробно: контроллер домена сначала обращается за сертификатом к специализированному хранилищу, а в случае неудачной попытки уже обращается к хранилищу локальной машины.
Чтобы просмотреть хранилище сертификатов сервисов на контролере домена, необходимо запустить консоль управления (MMC) и добавить оснастку «Сертификаты». Далее с помощью диспетчера сертификатов следует выбрать тип управления сертификатами.
Затем необходимо выбрать учетную запись Active Directory Domain Services.
Такой тип использования имеет ряд ограничений, накладываемых Windows. К примеру, невозможность автоматического обновления таких сертификатов для сервисов или управления сертификатами из данного хранилища через командную строку.
Возвращаясь к нашей проблеме, далее для ее решения нам оставалось только создать стенд с использованием двух сертификатов на основе отечественного и западного криптографических алгоритмов.
В ходе стендирования были сделаны следующие шаги:
После успешно проведенного стендирования, вооружившись данным решением, наша компания отправилась к заказчику и в нерабочие часы провела аналогичные испытания уже на «боевой схеме», которые также оказались успешными. С момента внедрения прошло достаточно времени, предложенное нами решение оказалось «рабочим», никаких проблем при его функционировании у заказчика не возникло.
Схожая проблема возникла в одном из наших проектов, где заказчику необходимо было организовать аутентификацию пользователей в домене Microsoft Windows по сертификатам ГОСТ. Обычно подобные задачи решаются путем использования специализированного средства компании «КРИПТО-ПРО», а именно «КриптоПро Winlogon». Данный продукт существует на рынке достаточно давно и максимально проработан, но иногда могут возникать непредвиденные сложности при его внедрении, с которыми нашей компании и пришлось столкнуться. Для его функционирования необходимо соответствующим образом настроить рабочую станцию, домен и контроллеры домена. Одним из требований при настройке контроллера домена в данном случае является выпуск сертификата на ГОСТ.
В случае с нашим заказчиком возникла ситуация, при которой для доступа к контроллеру домена используется, кроме протокола LDAP, еще и LDAP через SSL (LDAPS) с использованием уже установленного на контроллере сертификата RSA.
Небольшое отступление: по умолчанию трафик LDAP не защищен, что предоставляет возможность осуществлять мониторинг трафика между LDAP–клиентом и сервером. Чтобы обеспечить передачу трафика LDAP в безопасном режиме, необходимо использовать технологию SSL/TLS, сокращенно такая технология называется LDAPS.
LDAPS рекомендуется использовать в следующих случаях:
- если приложения используют аутентификацию Active Directory Domain Services через простое связывание (simple bind). Simple bind передает данные пользователя в открытом виде, поэтому рекомендуется использовать шифрование данных при аутентификации;
- если используется аутентификация через прокси-связывание;
- если приложения требуют защиты данных при интеграции с LDAP.
Таким образом, в нашей ситуации для работы LDAP over SSL/TLS (LDAPS) требуется установить сертификат на контроллер домена. Для активации LDAPS необходимо установить доверенный сертификат, выданный центром сертификации (которому доверяют контроллер домена и клиенты LDAPS) в хранилище сертификатов локального компьютера.
В связи с этим и возник вопрос совместного использования двух сертификатов, причем на различных криптографических алгоритмах при условии использования решения КриптоПро Winlogon, которое не предполагает одновременного использования двух сертификатов на контроллере домена.
Комментарий из инструкции:
Так как данная проблема не является распространенной, и, учитывая, что добавляется российская криптография, то для ее решения пришлось искать новые подходы. Изучение инструкций и тематических форумов ответа не дало. В итоге, чтобы решить данную задачу, пришлось углубиться в ее изучение и разобраться, каким именно образом контроллер домена использует сертификаты.
Итак, как же работает выбор сертификата контроллером домена?
При необходимости выбрать сертификат, контроллер обращается к хранилищу сертификатов локального компьютера и использует сертификат из этого хранилища. В большинстве случаев там будет один сертификат, и тогда проблем не возникнет. Если же в хранилище находится больше одного сертификата, то контроллер возьмет первый валидный сертификат для аутентификации сервера. Таким образом, использование одновременно двух (или более) сертификатов для различных целей в хранилище нежелательно.
Однако в Windows Server существует возможность легитимного использования нескольких сертификатов. Для этого используется отдельное хранилище Active Directory Domain Services (NTDS\Personal), в котором хранится сертификат для доступа по LDAPS.
В таком случае процесс выбора сертификата можно описать более подробно: контроллер домена сначала обращается за сертификатом к специализированному хранилищу, а в случае неудачной попытки уже обращается к хранилищу локальной машины.
Чтобы просмотреть хранилище сертификатов сервисов на контролере домена, необходимо запустить консоль управления (MMC) и добавить оснастку «Сертификаты». Далее с помощью диспетчера сертификатов следует выбрать тип управления сертификатами.
Затем необходимо выбрать учетную запись Active Directory Domain Services.
Такой тип использования имеет ряд ограничений, накладываемых Windows. К примеру, невозможность автоматического обновления таких сертификатов для сервисов или управления сертификатами из данного хранилища через командную строку.
Возвращаясь к нашей проблеме, далее для ее решения нам оставалось только создать стенд с использованием двух сертификатов на основе отечественного и западного криптографических алгоритмов.
В ходе стендирования были сделаны следующие шаги:
- в хранилище сертификатов локальной машины добавлен сертификат ГОСТ для аутентификации сервера при входе пользователей в домен;
- в хранилище сертификатов NTDS\Personal — сертификат RSA контроллера;
- проверено подключение по LDAPS (оно оказалось успешным);
- аналогично проверен процесс аутентификации пользователей в домене с помощью сертификата (на этом этапе проблем тоже не возникло).
После успешно проведенного стендирования, вооружившись данным решением, наша компания отправилась к заказчику и в нерабочие часы провела аналогичные испытания уже на «боевой схеме», которые также оказались успешными. С момента внедрения прошло достаточно времени, предложенное нами решение оказалось «рабочим», никаких проблем при его функционировании у заказчика не возникло.
nmk2002
Использовались ГОСТ-алгоритмы ГОСТ Р 34.10-2001 и ГОСТ Р 34.11-94 или КриптоПро Winlogon уже поддерживает ГОСТы 2012 года?
bryzga Автор
КриптоПро Winlogon не проверяли на новых алгоритмах. Мы использовали криптопровайдер КриптоПро CSP 3.6 с алгоритмами ГОСТ Р 34.10-2001 и ГОСТ Р 34.11-94. В новой версии криптопровайдера КриптоПро CSP 4.0 уже поддерживаются алгоритмы ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012, так что должно работать. Ждём сертифицированной версии.