Назад | Перейти на главную страницу

Как выдать сертификат машины Windows для компьютера, не присоединенного к домену?

У меня есть Windows Server 2012 AD / CA, и компьютеры, присоединенные к домену, автоматически получают общедоступный сертификат CA, а также получают сертификат компьютера, созданный и отправленный с помощью автоматической регистрации GPO. Все это используется для 802.1X и отлично работает.

Теперь мне нужно сгенерировать сертификат для компьютера win10, не присоединенного к домену, чтобы он также мог аутентифицироваться через 802.1X.

Это оказывается довольно сложно. Я наткнулся на этот сообщение, в котором описаны два способа сделать это:

Опция 1

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

вариант 2 (желательно)

  1. Создайте аккаунт в AD
  2. Выпустить сертификат из шаблона, который позволяет экспортировать закрытый ключ
  3. Используя сопоставление имен, прикрепите сертификат к учетной записи
  4. Создайте SPN, который соответствует SAN в сертификате ... т.е. если SAN - это computer.domain.com, вам необходимо создать SPN для учетной записи host / computer.domain.com
  5. Установить сертификат на целевую рабочую станцию ​​/ устройство

Этот дополнительный комментарий, кажется, предполагает, что пять шагов, описанных выше, можно свести к следующему:

  1. Создать учетную запись AD на компьютере
  2. Выпустить сертификат компьютера для добавляемого компьютера вне домена SAN:UPN=<hostname>$@<domain.tld>
  3. Установить сертификат компьютера на клиент

Вы можете немного упростить сложный вариант и сократить количество этапов, используя запись SAN в сертификате в формате SAN:UPN=<hostname>$@<domain.tld>. Это приводит к получению сертификата с именем принципа NT: <hostname>$@<domain.tld> в поле SAN, которое затем подходит для аутентификации на сервере политики сети как чистый компьютерный объект. Единственная зависимость - это создание учетной записи компьютера в 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="upn=win10test@test.local"

Затем я скопировал его в центр сертификации и отправил запрос. Сертификат для win10test был выдан, но он не содержит SAN поле. Не понимаю почему.

ОБНОВЛЕНИЕ 2

Новый запрос CSR с правильным атрибутом SAN как Крипта32 указал.

[NewRequest]
Subject="CN=win10test"
KeyLength=2048
KeySpec=1
MachineKeySet=TRUE
SMIME = FALSE

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "upn=win10test@test.local"

[RequestAttributes]
CertificateTemplate="NonDomainWorkstations"

Проблема, которая остается, заключается в том, что сертификат выше, похоже, не связан с win10test Учетная запись компьютера AD.

ОБНОВЛЕНИЕ 3

  1. Создана учетная запись компьютера AD win10test
  2. Изменено dNSHostname к win10test.test.local
  3. Создайте 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"
  1. Бегать certreq -new request.inf win10test.req на win10test
  2. Скопируйте win10test.req на сервер CA и отправьте запрос
  3. Скопируйте win10test.cer в win10test и установите на локальный компьютер.

Не удается выполнить аутентификацию 802.1x. Получите следующую ошибку в NPS:

Event 6273
host/win10test.test.local
TEST
TEST\host/win10test.test.local

The specified user account does not exist. 

Я ответил на вопрос ServerFault, аналогичный этому, на основе второй ссылки в ответе от @ Crypt32

Я не знаю, удовлетворяет ли этот ответ OP, потому что похоже, что они нацелены на создание запросов сертификатов вручную с использованием утилит certutil / certreq. Если у вас есть Active Directory и он доступен по сети с компьютера, не присоединенного к домену, IMO этот вопрос предоставляет самый простой метод.

Ни одно из предложенных OP решений не является хорошим.

Если есть только один или очень небольшое количество компьютеров рабочей группы (которые не являются частью леса AD), тогда может быть разумным зарегистрировать и обновить клиентские сертификаты вручную:

  1. Вы генерируете CSR (запрос сертификата) на компьютере рабочей группы
  2. Скопируйте CSR в CA (или на административный компьютер) и отправьте запрос в CA
  3. выпустить подписанный сертификат и скопировать его обратно клиенту
  4. установить сертификат на клиенте.

Если количество рабочих групп относительно велико, вы можете инвестировать в Веб-службы ADCS. Вот упрощенная версия в блоге AskDS: Включение CEP и CES для регистрации компьютеров, не входящих в домен, для сертификатов