Effettuare il provisioning di Windows Device Portal con un certificato SSL personalizzato

Windows Portale di dispositivi (WDP) consente agli amministratori di dispositivi di installare un certificato personalizzato da usare nelle comunicazioni HTTPS.

Sebbene sia possibile eseguire questa operazione nel proprio PC, questa funzionalità è destinata principalmente alle aziende che dispongono di un'infrastruttura di certificati esistente.

Ad esempio, una società potrebbe avere un'autorità di certificazione (CA) usata per firmare i certificati per i siti Web Intranet serviti tramite HTTPS. Questa funzionalità si trova sopra l'infrastruttura.

Overview

Per impostazione predefinita, WDP genera una CA radice autofirmata e poi la usa per firmare i certificati SSL per ogni endpoint su cui è in ascolto. Sono inclusi localhost, 127.0.0.1e ::1 (IPv6 localhost).

Sono inclusi anche il nome host del dispositivo (ad esempio , https://LivingRoomPC) e ogni indirizzo IP locale del collegamento assegnato al dispositivo (fino a due [IPv4, IPv6] per scheda di rete). È possibile visualizzare gli indirizzi IP locali del collegamento per un dispositivo esaminando lo strumento Rete nel WDP. Inizieranno con 10. o 192. per IPv4 o fe80: per IPv6.

Nell'installazione predefinita, è possibile che nel browser venga visualizzato un avviso del certificato a causa della CA radice non attendibile. In particolare, il certificato SSL fornito da WDP è firmato da una CA radice che il browser o il PC non considera attendibile. Questo problema può essere risolto creando una nuova CA radice attendibile.

Creare una CA radice

Questa operazione deve essere eseguita solo se l'azienda (o la casa) non ha un'infrastruttura di certificati configurata e deve essere eseguita una sola volta. Eseguire questo script da un prompt di PowerShell con privilegi elevati (amministratore) perché scrive nell'archivio dei LocalMachine\My certificati. Lo script crea una CA radice denominata WdpTestCA.cer. L'installazione di questo file nelle autorità di certificazione radice attendibili del computer locale farà sì che il dispositivo consideri attendibili i certificati SSL firmati da questa CA radice. Puoi (e dovrebbe) installare questo file .cer in ogni PC che vuoi connettere a WDP.

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

# Create root certificate authority (marked as a CA via Basic Constraints)
$FilePath = $OutputPath + "WdpTestCA.cer"
$Subject = "CN=" + $CN
$rootCA = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -Subject $Subject -HashAlgorithm "SHA512" -KeyUsage CertSign,CRLSign -TextExtension @("2.5.29.19={critical}{text}CA=true")
$rootCAFile = Export-Certificate -Cert $rootCA -FilePath $FilePath

La CA radice si trova ora in LocalMachine\My (con la relativa chiave privata). Il file WdpTestCA.cer esportato è il certificato pubblico da installare nelle Autorità di certificazione radice attendibili su ogni PC che si connette.

Creare un certificato SSL con la CA radice

I certificati SSL hanno due funzioni critiche: proteggere la connessione tramite la crittografia e verificare che si stia effettivamente comunicando con l'indirizzo visualizzato nella barra del browser (Bing.com, 192.168.1.37 e così via) e non con terze parti dannose.

Lo script di PowerShell seguente crea un certificato SSL per l'endpoint localhost . Ogni endpoint su cui WDP è in ascolto necessita di un proprio certificato; è possibile sostituire l'argomento $IssuedTo nello script con ognuno dei diversi endpoint per il dispositivo: il nome host, localhost e gli indirizzi IP. Questo script richiede anche un prompt di PowerShell con privilegi elevati . Il Get-ChildItem filtro usa lo stesso CN (PickAName) scelto nel passaggio 1, mantenendoli sincronizzati.

$IssuedTo = "localhost"
$Password = "PickAPassword"
$OutputPath = "c:\temp\"

# Retrieve the root CA (with its private key) from the store where it was created.
# Match the CN you used above.
$rootCA = Get-ChildItem -Path cert:\localmachine\my | Where-Object { $_.Subject -eq "CN=PickAName" -and $_.HasPrivateKey } | Select-Object -First 1

# 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)

Se si dispone di più dispositivi, è possibile riutilizzare i file con estensione pfx localhost, ma sarà comunque necessario creare separatamente i certificati indirizzo IP e nome host per ogni dispositivo.

Quando viene generato il bundle di file con estensione pfx, sarà necessario caricarli nel WDP.

Effettuare il provisioning di Windows Device Portal con le certificazioni

Per ogni file pfx creato per un dispositivo, è necessario eseguire il comando seguente da un prompt dei comandi con privilegi elevati.

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

Vedere di seguito per un esempio di utilizzo:

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

Dopo aver installato i certificati, riavviare il servizio in modo che le modifiche possano avere effetto:

sc stop webmanagement
sc start webmanagement

Tip

Gli indirizzi IP possono cambiare nel tempo. Molte reti usano DHCP per fornire indirizzi IP, quindi i dispositivi non ottengono sempre lo stesso indirizzo IP che avevano in precedenza. Se è stato creato un certificato per un indirizzo IP in un dispositivo e l'indirizzo del dispositivo è stato modificato, WDP genererà un nuovo certificato usando il certificato autofirmato esistente e smetterà di usare quello creato. In questo modo la pagina di avviso del certificato verrà nuovamente visualizzata nel browser. Per questo motivo, è consigliabile connettersi ai dispositivi tramite i relativi nomi host, che è possibile impostare nel portale di dispositivi di Windows. Questi rimarranno invariati indipendentemente dagli indirizzi IP.

Vedere anche