Approvisionner Windows Device Portal avec un certificat SSL personnalisé

Windows Device Portal (WDP) permet aux administrateurs d’appareils d’installer un certificat personnalisé à utiliser dans la communication HTTPS.

Bien que vous puissiez le faire sur votre propre PC, cette fonctionnalité est principalement destinée aux entreprises disposant d’une infrastructure de certificat existante en place.

Par exemple, une entreprise peut avoir une autorité de certification qu’elle utilise pour signer des certificats pour les sites web intranet servis via HTTPS. Cette fonctionnalité se trouve au-dessus de cette infrastructure.

Aperçu

Par défaut, WDP génère une autorité de certification racine auto-signée, puis l’utilise pour signer des certificats SSL pour chaque point de terminaison détecté. Cela inclut localhost, 127.0.0.1et ::1 (IPv6 localhost).

Sont également inclus le nom d’hôte de l’appareil (par exemple) https://LivingRoomPCet chaque adresse IP locale de lien affectée à l’appareil (jusqu’à deux [IPv4, IPv6] par carte réseau). Vous pouvez voir les adresses IP locales de lien pour un appareil en examinant l’outil Réseau dans le WDP. Ils commencent par 10. ou 192. pour IPv4, ou fe80: pour IPv6.

Dans la configuration par défaut, un avertissement de certificat peut apparaître dans votre navigateur en raison de l’autorité de certification racine non approuvée. Plus précisément, le certificat SSL fourni par WDP est signé par une autorité de certification racine que le navigateur ou le PC n’approuve pas. Cela peut être résolu en créant une AC racine approuvée.

Créer une AC racine

Cela ne doit être effectué que si votre entreprise (ou votre domicile) n’a pas d’infrastructure de certificat configurée et ne doit être effectuée qu’une seule fois. Exécutez ce script à partir d’une invite PowerShell avec élévation de privilèges (administrateur), car il écrit dans le magasin de certificats LocalMachine\My. Le script crée une autorité de certification racine appelée WdpTestCA.cer. Si vous installez ce fichier sur les autorités de certification racine de confiance de l’ordinateur local, votre appareil approuvera les certificats SSL signés par cette AC racine. Vous pouvez (et devez) installer ce fichier .cer sur chaque PC que vous souhaitez connecter à 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

L’autorité de certification racine se trouve désormais dans LocalMachine\My (avec sa clé privée). Le fichier WdpTestCA.cer exporté est le certificat public que vous installez dans les autorités de certification racines de confiance sur chaque PC qui se connecte.

Créer un certificat SSL avec l’autorité de certification racine

Les certificats SSL ont deux fonctions critiques : sécuriser votre connexion via le chiffrement et vérifier que vous communiquez réellement avec l’adresse affichée dans la barre de navigateur (Bing.com, 192.168.1.37, etc.) et non pas un tiers malveillant.

Le script PowerShell suivant crée un certificat SSL pour le localhost point de terminaison. Chaque point de terminaison qui écoute WDP a besoin de son propre certificat ; vous pouvez remplacer l’argument $IssuedTo dans le script par chacun des points de terminaison différents de votre appareil : le nom d’hôte, le localhost et les adresses IP. Ce script nécessite également une invite PowerShell avec élévation de privilèges . Le Get-ChildItem filtre utilise le même CN (PickAName) que vous avez choisi à l’étape 1 : gardez-les synchronisés.

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

Si vous avez plusieurs appareils, vous pouvez réutiliser les fichiers .pfx localhost, mais vous devez toujours créer des certificats d’adresse IP et de nom d’hôte pour chaque appareil séparément.

Lorsque l’ensemble de fichiers .pfx est généré, vous devez les charger dans le WDP.

Approvisionner Windows Device Portal avec la ou les certification(s)

Pour chaque fichier .pfx que vous avez créé pour un appareil, vous devez exécuter la commande suivante à partir d’une invite de commandes avec élévation de privilèges.

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

Consultez ci-dessous pour obtenir des exemples d’utilisation :

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

Une fois que vous avez installé les certificats, redémarrez le service afin que les modifications puissent prendre effet :

sc stop webmanagement
sc start webmanagement

Tip

Les adresses IP peuvent changer au fil du temps. De nombreux réseaux utilisent DHCP pour donner des adresses IP, de sorte que les appareils n’obtiennent pas toujours la même adresse IP qu’auparavant. Si vous avez créé un certificat pour une adresse IP sur un appareil et que l’adresse de cet appareil a changé, WDP génère un nouveau certificat à l’aide du certificat auto-signé existant et cesse d’utiliser celui que vous avez créé. Cela fera s’afficher à nouveau la page d’avertissement concernant le certificat dans votre navigateur. Pour cette raison, nous vous recommandons de nous connecter à vos appareils via leurs noms d’hôte, que vous pouvez définir dans le portail d’appareil Windows. Celles-ci restent les mêmes, quelles que soient les adresses IP.

Voir aussi