Effettuare il provisioning del Portale di dispositivi di Windows con un certificato SSL personalizzato

Il Portale di dispositivi di Windows offre agli amministratori di dispositivi un nuovo modo per installare un certificato personalizzato da usare nelle comunicazioni HTTPS.

Benché tale operazione possa essere eseguita sul tuo PC, questa funzionalità è destinata principalmente alle aziende che dispongono di un'infrastruttura di certificati esistente.

È ad esempio possibile che una società disponga di un'autorità di certificazione (CA) che viene usata per firmare i certificati per i siti Web intranet gestiti tramite HTTPS. Questa funzionalità sovrintende tale infrastruttura.

Panoramica

Per impostazione predefinita, il Portale di dispositivi di Windows genera una CA radice autofirmata e quindi la usa per firmare i certificati SSL per ogni endpoint su cui è in ascolto, tra cui localhost, 127.0.0.1 e ::1 (localhost IPv6).

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

Nella configurazione predefinita è possibile che venga visualizzato nel browser un avviso relativo al certificato a causa della CA radice non attendibile. In particolare, il certificato SSL fornito dal Portale di dispositivi di Windows è firmato da una CA radice non considerata attendibile dal browser o dal PC. Questo problema può essere risolto creando una nuova CA radice attendibile.

Creare una CA radice

Questa operazione deve essere eseguita solo se la tua azienda (o casa) non dispone di un'infrastruttura di certificati e va eseguita solo una volta. Lo script PowerShell seguente crea una CA radice denominata WdpTestCA.cer. Con l'installazione di questo file nelle autorità di certificazione radice attendibili del computer locale, il dispositivo considererà attendibili i certificati SSL firmati da questa CA radice. È possibile (e necessario) installare questo file con estensione cer in ogni PC che si vuole connettere al Portale di dispositivi di Windows.

$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

Dopo averlo creato, puoi usare il file WdpTestCA.cer per firmare i certificati SSL.

Creare un certificato SSL con la CA radice

I certificati SSL svolgono due funzioni essenziali: proteggere la connessione tramite la crittografia e verificare che la comunicazione avvenga effettivamente con l'indirizzo visualizzato nella barra del browser (Bing.com, 192.168.1.37 e così via) e non con una terza parte dannosa.

Lo script PowerShell seguente crea un certificato SSL per l'endpoint localhost. Ogni endpoint su cui è in ascolto il Portale di dispositivi di Windows necessita del proprio certificato. È possibile sostituire l'argomento $IssuedTo nello script con ciascuno dei diversi endpoint del dispositivo: nome host, localhost e indirizzi 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)

Se disponi di più dispositivi, puoi riusare i file pfx di localhost, ma dovrai comunque creare certificati per indirizzo IP e nome host di ogni dispositivo separatamente.

Quando viene generato il bundle di file con estensione pfx, sarà necessario caricare tali file nel Portale di dispositivi di Windows.

Effettuare il provisioning del Portale di dispositivi di Windows con le certificazioni

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

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

Vedi 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, è sufficiente riavviare il servizio in modo da rendere effettive le modifiche:

sc stop webmanagement
sc start webmanagement

Suggerimento

Gli indirizzi IP possono cambiare nel tempo. Molte reti usano DHCP per assegnare gli indirizzi IP, per cui i dispositivi non ottengono sempre lo stesso indirizzo IP che avevano in precedenza. Se è stato creato un certificato per un indirizzo IP di un dispositivo e l'indirizzo di tale dispositivo è cambiato, il Portale di dispositivi di Windows genererà un nuovo certificato usando il certificato autofirmato esistente e non userà più quello creato in precedenza. In questo modo verrà visualizzata nuovamente nel browser la pagina di avviso sul certificato. Per questo motivo, è consigliabile connettersi ai dispositivi tramite i nomi host, che possono essere impostati nel Portale di dispositivi di Windows. Questi rimarranno gli stessi indipendentemente dagli indirizzi IP.