Подготовка портала устройств Windows с использованием пользовательского SSL-сертификата

На портале устройств Windows (WDP) для администраторов устройств есть возможность устанавливать пользовательский сертификат для обмена данными по протоколу HTTPS.

Вы можете сделать то же самое и на собственном компьютере. Данная возможность предназначена в первую очередь для предприятий с уже развернутой инфраструктурой сертификатов.

Например, в компании может быть центр сертификации (ЦС) для подписи сертификатов для веб-сайтов интрасети, обслуживаемых по протоколу HTTPS. Эта возможность основана на данной инфраструктуре.

Обзор

По умолчанию WDP создает самозаверяющий сертификат корневого ЦС, а затем использует его для подписывания SSL-сертификатов для каждой конечной точки, на которой ожидается передача данных. К ним относятся localhost, 127.0.0.1 и ::1 (localhost IPv6).

Также сюда входят имя узла устройства (например, https://LivingRoomPC) и каждый IP-адрес локальной связи, назначенный устройству (до двух [IPv4, IPv6] на сетевой адаптер). IP-адреса локальной связи устройства можно просмотреть с помощью инструмента "Сеть" на WDP. Они начинаются с 10. или 192. для IPv4 или с fe80: для IPv6.

В конфигурации по умолчанию в браузере может появиться предупреждение о сертификате из-за недоверенного корневого ЦС. В частности, SSL-сертификат, предоставленный WDP, подписан корневым ЦС, которому не доверяет браузер или компьютер. Это можно исправить, создав новый доверенный корневой ЦС.

Создание корневого ЦС

Это следует сделать однократно и только в том случае, если в вашей компании (или у вас дома) не настроена инфраструктура сертификатов. Следующий сценарий PowerShell создает коневой ЦС с именем WdpTestCA.cer. После установки этого файла в доверенном корневом центре сертификации на локальном компьютере ваше устройство начнет доверять SSL-сертификатам, подписанным этим корневым ЦС. Вы можете (и вам следует) установить этот CER-файл на каждом компьютере, который должен подключаться к WDP.

$CN = "PickAName"
$OutputPath = "c:\temp\"

# Create root certificate authority
$FilePath = $OutputPath + "WdpTestCA.cer"
$Subject =  "CN="+$CN
$rootCA = New-SelfSignedCertificate -certstorelocation cert:\currentuser\my -Subject $Subject -HashAlgorithm "SHA512" -KeyUsage CertSign,CRLSign
$rootCAFile = Export-Certificate -Cert $rootCA -FilePath $FilePath

После создания этого ЦС можно использовать файл WdpTestCA.cer для подписывания SSL-сертификатов.

Создание SSL-сертификата с помощью корневого ЦС

SSL-сертификаты выполняют две важные функции: защищают подключения путем шифрования, а также обеспечивают обмен данными именно с адресом, отображаемым в строке браузера (Bing.com, 192.168.1.37 и т. д.), а не со злоумышленником.

Следующий сценарий PowerShell создает SSL-сертификат для конечной точки localhost. Каждой конечной точке, на которой WDP ожидает передачи данных, нужен собственный сертификат. Вы можете заменить аргумент $IssuedTo в скрипте каждой из различных конечных точек для своего устройства, указав имя узла, localhost или IP-адреса.

$IssuedTo = "localhost"
$Password = "PickAPassword"
$OutputPath = "c:\temp\"
$rootCA = Import-Certificate -FilePath C:\temp\WdpTestCA.cer -CertStoreLocation Cert:\CurrentUser\My\

# Create SSL cert signed by certificate authority
$IssuedToClean = $IssuedTo.Replace(":", "-").Replace(" ", "_")
$FilePath = $OutputPath + $IssuedToClean + ".pfx"
$Subject = "CN="+$IssuedTo
$cert = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -Subject $Subject -DnsName $IssuedTo -Signer $rootCA -HashAlgorithm "SHA512"
$certFile = Export-PfxCertificate -cert $cert -FilePath $FilePath -Password (ConvertTo-SecureString -String $Password -Force -AsPlainText)

Если у вас есть несколько устройств, можно использовать PFX-файлы многократно, но для каждого устройства по-прежнему необходимо создать сертификаты на основе IP-адресов и имен узла.

После создания пакета PFX-файлов их необходимо загрузить на WDP.

Подготовка портала устройств Windows с использованием сертификатов

Для каждого PFX-файла, созданного для устройства, в командной строке с повышенными привилегиями необходимо выполнить следующую команду.

WebManagement.exe -SetCert <Path to .pfx file> <password for pfx>

Пример использования приведен ниже.

WebManagement.exe -SetCert localhost.pfx PickAPassword
WebManagement.exe -SetCert --1.pfx PickAPassword
WebManagement.exe -SetCert MyLivingRoomPC.pfx PickAPassword

После установки сертификатов перезапустите службу, чтобы изменения вступили в силу.

sc stop webmanagement
sc start webmanagement

Совет

IP-адреса могут со временем меняться. Во многих сетях для выдачи IP-адресов используется протокол DHCP, поэтому устройства не всегда получают те же IP-адреса, что были у них ранее. Если вы создали сертификат для IP-адреса устройства, а адрес этого устройства изменился, WDP создаст новый сертификат с использованием существующего самозаверяющего сертификата и прекратит использовать сертификат, созданный вами. Из-за этого в браузере снова отобразится страница с предупреждением о сертификате. По этой причине мы рекомендуем подключаться к устройствам с помощью их имен узла, которые можно установить на портале устройств Windows. Эти имена остаются неизменными независимо от IP-адресов.