Network Device Enrollment Service (NDES) - это служба регистрации сетевых устройств, входящая в состав Active Directory Certificate Services (AD CS). Она позволяет маршрутизаторам, коммутаторам и другим сетевым устройствам получать сертификаты по протоколу SCEP (Simple Certificate Enrollment Protocol).

Требования для развертывания NDES:

В тестовой эксплуатации возможно объединить все роли на одном сервере (как в данной инструкции), но в реальной эксплуатации рекомендуется разделять роли по разным серверам

Установка Network Device Enrollment Service

Сервисная учетная запись

Служба NDES должна работать от имени выделенной доменной учетной записи (в данном руководстве: ndes).

Регистрация SPN (Service Principal Name)

Для корректной работы аутентификации Kerberos между пулом IIS (NDES) и сервером ЦС необходимо зарегистрировать имена SPN. Выполните в командной строке от имени администратора домена:

setspn -s http/<NDES-Server-FQDN> <DOMAIN>\ndes
setspn -s http/<NDES-Server-NetBIOS> <DOMAIN>\ndes

Подготовка шаблонов сертификатов

По умолчанию NDES использует шаблон IPSECIntermediateOffline. Рекомендуется дублировать шаблон (Duplicate Template) и создать собственный (например, NDES-GeneralPurpose).

Так же рекомендуется дублировать шаблоны CEPEncryption и EnrollmentAgentOffline - в данном примере это будут дубликаты с именами CEPEncryptionNDES и EnrollmentAgentOfflineNDES

Отображаемое имя сертификата сделаем путем добавления к отображаемому имени родительского шаблона  текста "для NDES". Т.е. наши шаблоны будут отображены в интерфейсе как "Шифрование CEP для NDES" и "Агент регистрации Exchange (автономный запрос) для NDES"

У шаблона EnrollmentAgentOfflineNDES необходимо разрешить экспорт закрытого ключа.

У шаблонов CEPEncryptionNDES и EnrollmentAgentOfflineNDES необходимо убрать требование одобрения диспетчером сертификатов ЦС.

 

Также следует проверить поставщиков шифрования - необходимо убедиться, что используются только CSP (Cryptography Service Provider) поставщики, а не KSP (Key Storage Provider).

Установка и базовая конфигурация

Дополнительная настройка (Реестр и IIS)

Мастер установки не производит тонкую настройку пула приложений IIS. Эти шаги необходимо выполнить вручную:

Пул приложений IIS

Откройте Диспетчер служб IIS (IIS Manager), перейдите в Пулы приложений (Application Pools). Найдите пулы SCEP и MSCEP. Откройте их Дополнительные параметры (Advanced Settings). В строке Удостоверение (Identity) проверьте, что указана учетная запись ndes

Обязательно переведите параметр Загрузить профиль пользователя (Load User Profile) в значение True.

Реестр 

Откройте regedit и перейдите в ветку HKLM\SOFTWARE\Microsoft\Cryptography\MSCEP. Измените значения строковых параметров SignatureTemplate, EncryptionTemplate и GeneralPurposeTemplate на системные имена (Template Name без пробелов) ваших подготовленных шаблонов.

В данном случае это будут:

Для применения изменений перезапустите службу IIS, выполнив команду iisreset в командной строке от имени администратора.

Диагностика: проверка работоспособности

Быстрый тест

Откройте браузер на клиентском устройстве (либо на самом сервере) и перейдите по адресу:
http://<NDES-Server-FQDN>/certsrv/mscep/mscep.dll (в случае с сервером http://localhost/certsrv/mscep/mscep.dll)
Успех: Откроется базовая HTML-страница "Служба регистрации сетевых устройств" (Network Device Enrollment Service).

Ошибка: Вернется код ошибки HTTP 403, 401, 500 или 503.


URL http://<имя хоста службы NDES>/certsrv/mscep_admin/mscep.dll предназначен для генерации одноразового пароля вызова (Challenge Password или OTP). Этот пароль необходим для того, чтобы доказать серверу, что устройство имеет право запросить сертификат. К нему обращаются системные администраторы (через веб-браузер) или серверы управления мобильными устройствами (MDM, например, Microsoft Intune, VMware Workspace ONE). Для этого требуется аутентификация с учетной записбю имеющей права на запрс сертификатов в вашем центре сертификации (CA), Данный URL не должен публиковвыться в открытый интернет без дополнительной защиты.

URL http://<имя хоста службы NDES>/certsrv/mscep/mscep.dll предназначен непосредствевнно для приема запросов на подпись сертификатов отконечных устройств и выдачи сертификаторв по пртоколу SCEP. Он не требует аутентификации, а безопасность обеспечивается на уровне протокола SCEP - устройство встраивает полученный ранее Challenge Password внутрь зашифрованного пакета (в атрибут challengePassword запроса PKCS#10). Данный URL может быть опубликоан и часто публикуется во внешнуую сеть (например через reverse proxy) для того, чтобы внешние устройства могли получать сертификаты.

Просмотр журналов

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

Проблемы сертификатов NDES

Помимо сертификатов для конечных устройств, у службы NDES имеются собственные служебные сертификаты (Registration Authority Certificates), необходимые для работы сервиса. Эти сертификаты по умолчанию выпускаются сроком на 2 года. После истечения этого срока могут возникнуть проблемы с восстановлением работоспособности службы NDES даже после перевыпуска данных сертификатов. Чтобы избежать данных проблем сертификаты после окончания срока действия нужно перевыпускать выполнив последовательность дейтсвий описанную ниже.

Алгоритм перевыпуска сертификатов

Если дубликаты шаблонов не создавались в процессе развертывания сервиса рекомендуется создать дубликаты, как описано в разделе "Подготовка шаблонов сертификатов"
Выпуск сертификата Шифрования CEP (Хранилище компьютера)

Этот сертификат машинный, перевыпуск простой.

  1.     Нажмите Win + R и введите certlm.msc (Локальный компьютер).
  2.     Перейдите в Личное -> Сертификаты.
  3.     Нажмите правой кнопкой -> Все задачи -> Запросить новый сертификат.
  4.     Выберите шаблон Шифрование CEP для NDES (CEPEncryptionNDES) и выпустите его.
Выпуск сертификата Агента заявок (Хранилище пользователя)
Выполнять это нужно под той учетной записью, которой на Центре Сертификации даны права на чтение и заявку этого шаблона (обычно это сервисная учетная запись NDES или администратор).
  1. Нажмите Win + R и введите certmgr.msc (Текущий пользователь).
  2. Перейдите в Личное -> Сертификаты.
  3. Нажмите правой кнопкой -> Все задачи -> Запросить новый сертификат.
  4. Найдите шаблон Агент регистрации Exchange (автономный запрос) для NDES.
  5. ВАЖНО!: Не нажимайте сразу "Заявка"! Нажмите на ссылку "Для регистрации в этом сертификате требуются дополнительные сведения..." (или кнопку Свойства).
  6. Перейдите на вкладку Закрытый ключ (Private Key), разверните раздел Параметры ключа (Key options) и обязательно поставьте галочку Сделать закрытый ключ экспортируемым (Make private key exportable).
  7. Нажмите ОК и выпустите сертификат.
  8. В той же пользовательской оснастке (certmgr.msc) кликните правой кнопкой мыши по только что выпущенному сертификату Агента -> Все задачи -> Экспорт.
  9. В мастере экспорта обязательно выберите «Да, экспортировать закрытый ключ» (Yes, export the private key).
  10. Оставьте формат .pfx по умолчанию.
  11. Задайте пароль для защиты файла ключа и сохраните .pfx файл на рабочий стол.
  12. Откройте оснастку компьютера (certlm.msc) -> Личное -> Сертификаты.
  13. Правый клик -> Все задачи -> Импорт.
  14. Укажите путь к сохраненному .pfx файлу, введите пароль и завершите импорт.

Очистка от просроченных сертификатов

Если в сертификатах NDES больше одного сертификата каждого типа, то служба не будет работать, а в журнале будет появляется ошибка 0x80070057

  1. В машинной оснастке (certlm.msc) найдите старые (истекшие) сертификаты Шифрования CEP и Агента и удалите их.
  2. Убедитесь, что в certlm.msc осталось ровно два новых сертификата (Шифрование и Агент).
  3. Вернитесь в пользовательскую оснастку (certmgr.msc) и удалите сертификат Агента оттуда тоже (вы его уже перенесли, там он больше не нужен и может только запутать систему в будущем).

В итоге должно остаться только два сертификата с назначением "Агент запроса сертификата": один из шаблона "Шифрофание CEP для NDES" и один из шаблона "Агент регистрации Exchange (автономный запрос) для NDES":

Назначение прав на закрытые ключи

  1. В certlm.msc кликните правой кнопкой мыши по новому сертификату Агента -> Все задачи -> Управление закрытыми ключами.
  2. Добавьте учетную запись, под которой работает пул IIS для SCEP (ваша сервисная учетка или IIS_IUSRS), и дайте ей права на Чтение (Read).
  3. Повторите то же самое для нового сертификата Шифрования CEP.

После всех вышеописанных действий необходимо перезапустить IIS командой iisreset

Другие возможные проблемы

Проблема

Симптомы

Причина

Решение

 

Ошибка HTTP 500 или 503 при открытии страницы mscep.dll

Пул приложений SCEP останавливается сразу после обращения. В логах IIS фиксируется статус 503.

IIS не может запустить процесс от имени сервисной учетной записи, либо не загружен профиль.

В Локальной политике безопасности дайте ndes право Вход в качестве пакетного задания. В пуле IIS установите Загрузить профиль пользователя в True.

Ошибки Event ID 29, 31 или 32 от источника NDES

Служба сообщает, что не может получить требуемые сертификаты.

NDES не может выписать себе сертификаты при старте, либо указаны неверные имена шаблонов.

Проверьте системные имена шаблонов в реестре. Убедитесь, что ndes имеет права Чтение и Заявка, и шаблоны опубликованы на ЦС.

Устройства получают HTTP 401 (Unauthorized)

Сетевое оборудование не может получить сертификат (ошибки 401.x в логах IIS).

Неверная настройка методов аутентификации в IIS.

В IIS (приложение certsrv/mscep) отключите Проверку подлинности Windows и включите Анонимную проверку подлинности.

Запросы зависают ("Pending") или "RPC Server Unavailable"

Запросы остаются в папке Ожидающие запросы ЦС.

В шаблоне включено ручное одобрение, или заблокирован RPC-трафик между NDES и ЦС.

Снимите флажок "Требуется одобрение" в шаблоне. Откройте порты TCP 135 и динамические порты RPC (TCP 49152-65535).

Исчерпание лимита паролей при массовом развертывании

Часть устройств успешно получает сертификаты, остальные отклоняются по таймауту.

NDES по умолчанию кэширует не более 5 динамических паролей (срок жизни 60 минут).

В реестре увеличьте значение параметра PasswordMax (например, до 50) и PasswordValidity.

Внезапная остановка сервиса (Истекли RA-сертификаты)

Сервис перестал обрабатывать SCEP-запросы. Event ID 30, 31, 33.

Истек срок действия служебных сертификатов агента регистрации NDES.

Откройте certlm.msc -> Личные -> Сертификаты. Запросите новые сертификаты вручную, используя соответствующие шаблоны.

Конфликт старых и новых RA-сертификатов

Служба не функционирует. Ошибка о наличии нескольких сертификатов (Multiple certificates found).

NDES обнаружил в хранилище как старые, так и новые сертификаты с требуемыми OID.

Удалите старые/невалидные сертификаты агента регистрации (должно остаться строго 2). Выполните iisreset.

Нет доступа к закрытому ключу сертификатов RA

Ошибки о недоступности криптопровайдера.

ndes не имеет прав на чтение закрытых ключей перевыпущенных служебных сертификатов.

В certlm.msc (Управление закрытыми ключами) добавьте учетную запись ndes и предоставьте ей права Чтение на оба сертификата.

Ошибка SSL/TLS на стороне клиента

Оборудование не может установить HTTPS соединение с NDES.

Проблемы с SSL-сертификатом веб-сервера IIS (самоподписан, истек, не совпадает SAN).

В IIS проверьте Привязки (Bindings). Для HTTPS используйте валидный сертификат, выданный доверенным ЦС, с корректным SAN.