У меня есть Windows Server 2012 AD / CA, и компьютеры, присоединенные к домену, автоматически получают общедоступный сертификат CA, а также получают сертификат компьютера, созданный и отправленный с помощью автоматической регистрации GPO. Все это используется для 802.1X и отлично работает.
Теперь мне нужно сгенерировать сертификат для компьютера win10, не присоединенного к домену, чтобы он также мог аутентифицироваться через 802.1X.
Это оказывается довольно сложно. Я наткнулся на этот сообщение, в котором описаны два способа сделать это:
Экспортируйте сертификат с компьютера, присоединенного к домену. Я тестировал, и это работает, но, как объясняется в этом посте, недостатком является то, что все компьютеры, не присоединенные к домену, будут использовать один и тот же сертификат.
Этот дополнительный комментарий, кажется, предполагает, что пять шагов, описанных выше, можно свести к следующему:
SAN:UPN=<hostname>$@<domain.tld>
Вы можете немного упростить сложный вариант и сократить количество этапов, используя запись 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
dNSHostname
к win10test.test.local[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Не удается выполнить аутентификацию 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), тогда может быть разумным зарегистрировать и обновить клиентские сертификаты вручную:
Если количество рабочих групп относительно велико, вы можете инвестировать в Веб-службы ADCS. Вот упрощенная версия в блоге AskDS: Включение CEP и CES для регистрации компьютеров, не входящих в домен, для сертификатов