Network Device Enrollment Service (NDES) - это служба регистрации сетевых устройств, входящая в состав Active Directory Certificate Services (AD CS). Она позволяет маршрутизаторам, коммутаторам и другим сетевым устройствам получать сертификаты по протоколу SCEP (Simple Certificate Enrollment Protocol).
Требования для развертывания NDES:
- Домен Active Directory с развёрнутым Центром сертификации предприятия (Enterprise CA) на базе Windows Server.
- Сервер Windows Server (можно совместить с CA или использовать выделенный), присоединённый к домену.
- Учётная запись с правами администратора домена и локального администратора на сервере.
- Открытый порт TCP 443 (HTTPS) на брандмауэре сервера NDES.
- Разрешённые протоколы TLS 1.2 и выше (настраиваются в реестре, если необходимо).
Установка Network Device Enrollment Service
Сервисная учетная запись
Служба NDES должна работать от имени выделенной доменной учетной записи (в данном руководстве: ndes).
- На будущем сервере NDES добавьте учетную запись ndes в локальную группу IIS_IUSRS.
- В консоли Шаблоны сертификатов (Certificate Templates) выдайте этой учетной записи права Чтение (Read) и Заявка (Enroll) на шаблоны, которые будет использовать NDES. NDES использует 2 типа шаблонов - CEPEncryption (Шифрование CEP) и EnrollmentAgentOffline (Агент регистрации Exchange (автономный запрос)).
- В свойствах самого Центра сертификации (Certification Authority) на вкладке Безопасность (Security) предоставьте ей право Запрос сертификатов (Request Certificates).
Регистрация 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).
Установка и базовая конфигурация
- Откройте Диспетчер серверов (Server Manager) и перейдите в Добавить роли и компоненты (Add Roles and Features).
- Выберите роль Службы сертификатов Active Directory (Active Directory Certificate Services) и добавьте службу роли Служба регистрации сетевых устройств (Network Device Enrollment Service).
- После завершения установки нажмите на предупреждающий значок конфигурации AD CS.
- Укажите учетную запись с правами Администратора предприятия (Enterprise Admin) для выполнения настройки.
- На шаге конфигурации NDES укажите подготовленную сервисную учетную запись ndes.
- Выберите ваш ЦС предприятия (Enterprise CA).
- Заполните данные для сертификата агента регистрации (Registration Authority, RA) — это сертификат, которым NDES будет подписывать запросы от имени устройств.
- Завершите работу мастера установки.
Дополнительная настройка (Реестр и 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 без пробелов) ваших подготовленных шаблонов.
В данном случае это будут:
- SigantureTemplate - "EnrollmentAgentOfflineNDES"
- EncryptionTemplate - "CEPEncryptionNDES"
- GeneralPurposeTemplate - "NDES-GeneralPurpose"
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) для того, чтобы внешние устройства могли получать сертификаты.
Просмотр журналов
- Просмотр событий (Event Viewer) -> Журналы Windows (Windows Logs) -> Приложение (Application).
Фильтр по источнику NetworkDeviceEnrollmentService. - Журналы IIS: C:\inetpub\logs\LogFiles\W3SVC1\.
Здесь фиксируются статусы HTTP-ответов и факты поступления запросов. - Журналы ЦС (CA):
На сервере ЦС в Просмотре событий ищите ошибки от источника CertificationAuthority.
Возможные проблемы
Проблемы сертификатов NDES
Помимо сертификатов для конечных устройств, у службы NDES имеются собственные служебные сертификаты (Registration Authority Certificates), необходимые для работы сервиса. Эти сертификаты по умолчанию выпускаются сроком на 2 года. После истечения этого срока могут возникнуть проблемы с восстановлением работоспособности службы NDES даже после перевыпуска данных сертификатов. Чтобы избежать данных проблем сертификаты после окончания срока действия нужно перевыпускать выполнив последовательность дейтсвий описанную ниже.
Алгоритм перевыпуска сертификатов
Выпуск сертификата Шифрования CEP (Хранилище компьютера)
Этот сертификат машинный, перевыпуск простой.
- Нажмите Win + R и введите
certlm.msc(Локальный компьютер). - Перейдите в Личное -> Сертификаты.
- Нажмите правой кнопкой -> Все задачи -> Запросить новый сертификат.
- Выберите шаблон Шифрование CEP для NDES (CEPEncryptionNDES) и выпустите его.
Выпуск сертификата Агента заявок (Хранилище пользователя)
- Нажмите
Win + Rи введитеcertmgr.msc(Текущий пользователь). - Перейдите в Личное -> Сертификаты.
- Нажмите правой кнопкой -> Все задачи -> Запросить новый сертификат.
- Найдите шаблон Агент регистрации Exchange (автономный запрос) для NDES.
- ВАЖНО!: Не нажимайте сразу "Заявка"! Нажмите на ссылку "Для регистрации в этом сертификате требуются дополнительные сведения..." (или кнопку Свойства).
- Перейдите на вкладку Закрытый ключ (Private Key), разверните раздел Параметры ключа (Key options) и обязательно поставьте галочку Сделать закрытый ключ экспортируемым (Make private key exportable).
- Нажмите ОК и выпустите сертификат.
- В той же пользовательской оснастке (certmgr.msc) кликните правой кнопкой мыши по только что выпущенному сертификату Агента -> Все задачи -> Экспорт.
- В мастере экспорта обязательно выберите «Да, экспортировать закрытый ключ» (Yes, export the private key).
- Оставьте формат .pfx по умолчанию.
- Задайте пароль для защиты файла ключа и сохраните .pfx файл на рабочий стол.
- Откройте оснастку компьютера (certlm.msc) -> Личное -> Сертификаты.
- Правый клик -> Все задачи -> Импорт.
- Укажите путь к сохраненному .pfx файлу, введите пароль и завершите импорт.
Очистка от просроченных сертификатов
Если в сертификатах NDES больше одного сертификата каждого типа, то служба не будет работать, а в журнале будет появляется ошибка 0x80070057
- В машинной оснастке (certlm.msc) найдите старые (истекшие) сертификаты Шифрования CEP и Агента и удалите их.
- Убедитесь, что в certlm.msc осталось ровно два новых сертификата (Шифрование и Агент).
- Вернитесь в пользовательскую оснастку (certmgr.msc) и удалите сертификат Агента оттуда тоже (вы его уже перенесли, там он больше не нужен и может только запутать систему в будущем).
В итоге должно остаться только два сертификата с назначением "Агент запроса сертификата": один из шаблона "Шифрофание CEP для NDES" и один из шаблона "Агент регистрации Exchange (автономный запрос) для NDES":
Назначение прав на закрытые ключи
- В certlm.msc кликните правой кнопкой мыши по новому сертификату Агента -> Все задачи -> Управление закрытыми ключами.
- Добавьте учетную запись, под которой работает пул IIS для SCEP (ваша сервисная учетка или IIS_IUSRS), и дайте ей права на Чтение (Read).
- Повторите то же самое для нового сертификата Шифрования 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. |








