Вопрос или проблема
У меня есть Windows Server 2012 с AD/CA, и компьютеры, присоединенные к домену, автоматически получают публичный сертификат CA, а также получают сгенерированный сертификат компьютера, который внедряется с помощью авто-заказа через GPO. Все это используется для 802.1X и работает отлично.
Теперь мне нужно сгенерировать сертификат для компьютера Windows 10, не присоединенного к домену, чтобы он также мог аутентифицироваться с помощью 802.1X.
Это оказывается довольно сложной задачей. Я нашел этот пост, который описывает два способа достижения этой цели:
вариант 1
Экспортировать сертификат с компьютера, присоединенного к домену. Я протестировал этот способ, и он работает, но, как указано в том посте, недостаток в том, что все компьютеры, не входящие в домен, будут использовать один и тот же сертификат.
вариант 2 (предпочтительный)
- Создать учетную запись в AD
- Выдать сертификат из шаблона, который позволяет экспортировать закрытый ключ
- Используя сопоставления имен, прикрепить сертификат к учетной записи
- Создать SPN, соответствующий SAN на сертификате… т.е. если SAN это computer.domain.com, нужно создать SPN для учетной записи host/computer.domain.com
- Установить сертификат на целевую рабочую станцию/устройство
Этот комментарий, похоже, подразумевает, что пять шагов выше можно сократить до следующих:
- Создать компьютерную учетную запись в AD
- Выдать компьютерный сертификат для компьютера вне домена, добавив
SAN:UPN=<hostname>$@<domain.tld>
- Установить компьютерный сертификат на клиенте
Вы можете сделать сложный вариант немного проще и сократить несколько шагов, используя запись SAN в сертификате с форматом
SAN:UPN=<hostname>$@<domain.tld>
. Это приведет к сертификату с NT Principal Name в поле SAN, что подходит для аутентификации на NPS как чистый объект компьютера. Единственная зависимость – создать учетную запись компьютера в Active Directory и добавить ее в соответствующие группы для AuthZ.
Я создал учетную запись Computer
в AD с именем хоста win10test
, но я не понимаю, как сгенерировать сертификат и как добавить SAN:UPN=<hostname>$@<domain.tld>
в сертификат.
Мне нужно создать CSR на компьютере вне домена?
Может кто-то объяснить инструкции из поста на форуме MS. Спасибо.
ОБНОВЛЕНИЕ
Я создал запрос csr request.inf, который выглядит так:
[NewRequest]
Subject="CN=win10test"
KeyLength=2048
KeySpec=1
MachineKeySet=TRUE
SMIME = FALSE
[RequestAttributes]
CertificateTemplate="NonDomainWorkstations"
SAN="[email protected]"
Я затем скопировал его на CA и подал запрос. Сертификат для win10test был выдан, но он не содержит поля SAN. Я не понимаю, почему.
ОБНОВЛЕНИЕ 2
Новый запрос CSR с правильным атрибутом SAN, как указал Crypt32.
[NewRequest]
Subject="CN=win10test"
KeyLength=2048
KeySpec=1
MachineKeySet=TRUE
SMIME = FALSE
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "[email protected]"
[RequestAttributes]
CertificateTemplate="NonDomainWorkstations"
Проблема, которая остается, в том, что сертификат выше, кажется, не связывается с учетной записью компьютера win10test
в AD.
ОБНОВЛЕНИЕ 3
- Создал компьютерную учетную запись AD win10test
- Изменил
dNSHostname
на win10test.test.local - Создал CSR на win10test, используя следующий request.inf:
[NewRequest]
Subject="CN=win10test"
KeyLength=2048
KeySpec=1
MachineKeySet=TRUE
SMIME = FALSE
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=win10test.test.local"
[RequestAttributes]
CertificateTemplate="NonDomainWorkstations"
- Запустите
certreq -new request.inf win10test.req
на win10test - Скопируйте win10test.req на сервер CA и подайте запрос
- Скопируйте win10test.cer на win10test и установите на локальной машине.
Не могу пройти аутентификацию 802.1x. Получаю следующую ошибку в NPS:
Событие 6273
host/win10test.test.local
TEST
TEST\host/win10test.test.local
Указанная учетная запись пользователя не существует.
Ни одно из предложенных решений не подходит.
Если есть только один или очень немного компьютеров рабочей группы (которые не являются частью леса AD), то может иметь смысл вручную выдавать и обновлять клиентские сертификаты:
- Вы генерируете CSR (запрос на сертификат) на компьютере рабочей группы
- Копируете CSR на CA (или администраторский ПК) и подаете запрос в CA
- выдаете подписанный сертификат и копируете его обратно на клиент
- устанавливаете сертификат на клиенте.
Если число компьютеров рабочей группы относительно велико, вы можете инвестировать в Веб-службы ADCS. Вот упрощенная версия на блоге AskDS: Включение CEP и CES для регистрации компьютеров вне домена для сертификатов
Я ответил на вопрос ServerFault, похожий на этот, основываясь на второй ссылке в ответе от @Crypt32
Я не знаю, удовлетворяет ли этот ответ автора вопроса, потому что, похоже, он нацелен на ручное создание запросов на сертификаты с использованием утилит certutil/certreq. Если у вас есть Active Directory, и она доступна через сеть с компьютера, не присоединенного к домену, то, на мой взгляд, этот вопрос предоставляет самый простой метод.
Ответ или решение
Конечно! Давайте подробно рассмотрим процесс получения сертификата для машины Windows, не входящей в домен, с использованием Active Directory Certificate Services (AD CS) на сервере Windows Server 2012.
Шаги для получения сертификата на недомашнем компьютере
-
Создание учетной записи компьютера в Active Directory:
- На вашем контроллере домена создайте учетную запись для компьютера, например "win10test". Убедитесь, что вы установили правильное значение для атрибута
dNSHostname
, соответствующее вашему домену, например "win10test.test.local".
- На вашем контроллере домена создайте учетную запись для компьютера, например "win10test". Убедитесь, что вы установили правильное значение для атрибута
-
Создание CSR (Certificate Signing Request):
- На недомашнем компьютере создайте файл
request.inf
с содержимым, подобным следующему:
[NewRequest] Subject="CN=win10test" KeyLength=2048 KeySpec=1 MachineKeySet=TRUE SMIME = FALSE [Extensions] 2.5.29.17 = "{text}" _continue_ = "dns=win10test.test.local" [RequestAttributes] CertificateTemplate="NonDomainWorkstations"
Обратите внимание, что в поле
SAN
(Subject Alternative Name) используется форматdns=win10test.test.local
. Это добавит необходимый SAN для аутентификации. - На недомашнем компьютере создайте файл
-
Запуск команды для создания CSR:
- Откройте командную строку с правами администратора на компьютере
win10test
и выполните следующую команду:
certreq -new request.inf win10test.req
- Откройте командную строку с правами администратора на компьютере
-
Отправка CSR на CA (Certification Authority):
- Затем перенесите файл
win10test.req
на сервер CA, где вы можете отправить запрос на подпись сертификата. Для этого используйте либо графический интерфейс, либо команду:
certreq -submit win10test.req win10test.cer
Это создаст и выдаст сертификат, который вы можете вернуться на компьютер
win10test
. - Затем перенесите файл
-
Установка сертификата на компьютере:
- После получения сертификата (например,
win10test.cer
), перенесите его обратно на компьютерwin10test
и установите следующим образом:
certreq -accept win10test.cer
- После получения сертификата (например,
-
Проверка установленных сертификатов:
- Убедитесь, что сертификат установлен в личное хранилище сертификатов для компьютера. Вы можете использовать для этого оснастку управлении сертификатами (
certlm.msc
).
- Убедитесь, что сертификат установлен в личное хранилище сертификатов для компьютера. Вы можете использовать для этого оснастку управлении сертификатами (
-
Настройка RADIUS/NPS для аутентификации:
- Убедитесь, что настройки сервера RADIUS/NPS включают вашу учетную запись компьютера
win10test
и что она принадлежит соответствующим группам для авторизации.
- Убедитесь, что настройки сервера RADIUS/NPS включают вашу учетную запись компьютера
-
Настройка 802.1X:
- Убедитесь, что клиентская машина настроена для аутентификации через 802.1X, и выбран правильный метод аутентификации (например, EAP-TLS).
Решение возможных проблем
- Если вы получаете ошибку аутентификации, как, например, "The specified user account does not exist," убедитесь, что:
- Учетная запись компьютера существует и правильно прописана в Active Directory.
- Сертификат установлен в нужное хранилище.
- На NPS настроены правильные параметры для обработки запроса на аутентификацию.
Если у вас много таких не доменных рабочих станций, стоит рассмотреть возможность использования ADCS Web Enrollment Services, что автоматизирует процесс управления сертификатами для них.
Следуя этим шагам, вы сможете успешно создать и установить сертификат для не доменного компьютера, настроенного для аутентификации через 802.1X.