Si vous exécutez déjà des commandes à distance avec PowerShell Remoting (PSRemoting), vous savez à quel point cette fonctionnalité est pratique. Vous pouvez vous connecter à un ou plusieurs ordinateurs distants et les gérer comme s’ils étaient locaux. PSRemoting dépend de Windows Remote Management (WinRm) pour fonctionner, et si vous n’utilisez pas WinRM via SSL, vous pourriez vous exposer à des problèmes de sécurité.
Dans ce tutoriel pratique, vous allez apprendre à configurer Windows sur le client et le serveur pour utiliser WinRM via HTTPS (SSL) et comment utiliser des certificats pour authentifier l’utilisation de WinRM via HTTPS.
Prérequis
Pour suivre ce tutoriel, assurez-vous d’avoir les éléments suivants:
- A Windows 7+ or Server 2008 R2 machine to serve as the client machine. This tutorial will use Windows 10.
- A Windows 7+ or Server 2008 R2+ machine to serve as the server machine. This tutorial will use Windows Server 2019.
- Un accès à un compte administratif local ou un compte avec des droits administratifs locaux sur les machines cliente et serveur.
- Une infrastructure de clés publiques (PKI) Active Directory Certificate Services (ADCS) mise en place. Il est recommandé d’utiliser ADCS pour les déploiements en production, mais cela est facultatif pour ce tutoriel et les tests. Le tutoriel supposera que la PKI est mise en place en tant que CA autonome ou entreprise.
Pourquoi utiliser WinRM via SSL?
PSRemoting, par défaut, utilise WinRM et vous permet de gérer à distance des machines clientes. Une fois que PSRemoting établit une session via WinRM, il chiffre ensuite toutes les communications du client vers le serveur. De plus, la procédure de configuration pour implémenter PSRemoting sans HTTPS est assez simple.
Si PSRemoting chiffre déjà les communications de session, pourquoi se donner la peine de mettre en place quelque chose comme ADCS et de gérer des certificats alors que c’est déjà chiffré ?
Parce que pendant le processus d’authentification, les informations d’identification peuvent être envoyées sous des formats non sécurisés en fonction du type d’authentification utilisé.
Un moyen facile de rendre PSRemoting plus sécurisé est d’utiliser WinRM via HTTPS au lieu de HTTP. HTTPS encapsule l’intégralité de votre flux de connexion, y compris l’authentification, dans la couche de chiffrement déjà utilisée par WinRM. HTTPS permet également de vérifier que le serveur auquel vous vous connectez est bien celui que vous pensez.
Configuration de WinRM avec un certificat auto-signé
Maintenant, passons aux démonstrations. Pour le premier exemple, vous allez apprendre comment configurer la communication de chiffrement PSRemoting avec WinRM via SSL à l’aide d’un certificat auto-signé.
Utiliser un certificat auto-signé est un excellent moyen de créer un environnement de test sans se soucier d’une infrastructure de clés publiques (PKI) comme ADCS. Lorsque vous utilisez un certificat auto-signé, vous générez un certificat que le serveur signe lui-même, ce qui le confirme essentiellement lui-même.
Les certificats servent généralement à deux tâches : authentifier une connexion et la chiffrer. Utiliser un certificat auto-signé ne permet que d’implémenter la seconde tâche. Pour valider l’identité d’un serveur, vous devez toujours utiliser des certificats fournis par une PKI. Les certificats fournis par une PKI fournissent une source unique de confiance, contrairement aux certificats auto-signés pour lesquels vous devez faire confiance à chaque certificat individuellement manuellement.
La configuration de WinRM via SSL avec un certificat auto-signé nécessite quatre étapes principales :
- Créer le certificat auto-signé sur la machine de destination.
- Configurer le serveur WinRM (écouteur) pour utiliser le certificat auto-signé pour l’authentification.
- Ouvrir les ports appropriés dans le pare-feu Windows de la machine de destination.
- Exécuter une commande pour initier une connexion à distance sur le client en utilisant une cmdlet PowerShell comme
Enter-PSSession
.
Passons maintenant en revue chaque étape.
Créer un certificat auto-signé
La première étape consiste à générer un certificat auto-signé sur le serveur. Lors de la connexion, PSRemoting utilisera ce certificat pour chiffrer toutes les communications.
Sur ServerB, ouvrez une console Windows PowerShell en tant qu’administrateur, puis exécutez la cmdlet New-SelfSignedCertificate
comme indiqué ci-dessous. En exécutant la commande suivante, un certificat sera généré pour ServerB.domain.com dans le magasin personnel des certificats de la machine locale.

Le paramètre Sujet
doit être le nom de domaine complet du serveur. WinRM utilise le sujet pour valider l’identité du serveur.
Même si le serveur est dans un groupe de travail, fournissez toujours un nom de domaine, par exemple domain.com ou lab.local. Lors de la connexion à la machine de destination, le nom DNS auquel vous vous connectez doit correspondre exactement à ce nom de sujet, sinon la connexion échouera.
L’extension TextExtension
vous permet de définir l’utilisation des clés (2.5.29.37
) du certificat, qui définit à quoi le certificat est autorisé à être utilisé. Définissez l’utilisation des clés pour l’authentification du serveur ({text}1.3.6.1.5.5.7.3.1
) pour vous assurer que le certificat ne peut être utilisé que pour authentifier l’identité d’un serveur.
Après l’exécution de
New-SelfSignedCertificates
, il renverra l’empreinte numérique du certificat qu’il a généré. Enregistrez cette empreinte car vous en aurez besoin pour la commande suivante.
Configuration de l’écouteur WinRM.
Une fois que vous avez créé le certificat auto-signé sur le serveur, configurez ensuite le listener WinRm pour commencer à utiliser ce certificat pour l’authentification. Pour ce faire, utilisez la commande winrm create
comme indiqué ci-dessous.
Le paramètre Address=*
dans la commande ci-dessous indique au listener d’écouter sur n’importe quelle adresse IP configurée sur le serveur. Si le serveur a plusieurs adresses IP configurées, vous pouvez définir une adresse IP spécifique ici.
N’oubliez pas de remplacer la balise
<certificat thumbprint ici>
par le thumbprint retourné à l’étape précédente.

Ouverture du port pare-feu SSL WinRM
Ensuite, si vous utilisez le pare-feu Windows, vous devrez autoriser le trafic HTTPS entrant sur le serveur via le port HTTPS par défaut 5986
.
Ouvrez le port pare-feu pour WinRM via HTTPS en utilisant PowerShell en exécutant la commande ci-dessous.
Connexion au serveur via SSL
Vous avez maintenant configuré le serveur Windows distant pour accepter les connexions WinRM via SSL. À ce stade, revenez sur le client et lancez les commandes PSRemoting que vous souhaitez tester. Par exemple, vous pouvez essayer la cmdlet Enter-PSSession
ou Invoke-Command
. Mais maintenant, vous vous connectez un peu différemment par rapport à la connexion HTTP par défaut.
Se connecter via HTTPS nécessite généralement un unique paramètre UseSSL
. Ce paramètre indique à la commande de rechercher un écouteur WinRM HTTPS plutôt qu’un écouteur HTTP par défaut. Le paramètre UseSSL
est disponible sur plusieurs commandes PSRemoting.
Pour les tests, exécutez Enter-PSSession
en fournissant le FQDN du serveur tel que défini par le sujet du certificat auto-signé, un objet PSCredential pour définir le nom d’utilisateur et le mot de passe, et enfin, le paramètre de commutation UseSSL
.
Si vous exécutez la commande ci-dessus, vous recevrez un message d’erreur car vous avez configuré l’écouteur WinRM sur le serveur pour utiliser un certificat auto-signé. Chaque fois que le client PSRemoting tente de s’authentifier auprès du serveur, il essaie de valider le certificat, mais il ne peut pas le faire. Un certificat auto-signé n’a pas de chaîne de confiance que la commande peut suivre et échoue.

Pour vous connecter au serveur avec un certificat auto-signé, vous devez ignorer la vérification de confiance du certificat. Vous pouvez le faire en créant une option de session appelée SkipCACheck
à l’aide de la cmdlet New-PSSessionOption
et en la passant à la commande comme indiqué ci-dessous.
Vous pouvez définir plusieurs objets PSSessionOption différents pour ajouter des options à votre connexion distante qui ne sont pas incluses directement dans la cmdlet
Enter-PSSession
.
Essayez de vous connecter à nouveau et PowerShell devrait maintenant vous demander des informations d’identification. Une fois fournies, vous devriez pouvoir vous connecter au serveur avec WinRM via SSL!
Configuration de WinRM avec un certificat signé par une autorité de certification (CA)
Si vous prévoyez d’utiliser PSRemoting avec WinRM en production et que vous souhaitez rester aussi sécurisé que possible, vous devez vous concentrer sur WinRM via SSL en utilisant un certificat signé par une autorité de certification (CA).
Les certificats signés par une CA maintiennent une chaîne de confiance et sont plus sécurisés que les simples certificats auto-signés car ils valident l’identité de l’émetteur du certificat.
Si vous êtes dans un environnement Active Directory, l’une des méthodes les plus courantes pour configurer une CA est d’utiliser ADCS. Avec ADCS, vous pouvez déployer des certificats sur les appareils et configurer WinRM pour utiliser ces certificats.
Ce tutoriel suppose que vous avez déjà mis en place et configuré ADCS dans votre environnement.
Pour une configuration rapide, vous pouvez suivre la documentation de Microsoft, mais pour un déploiement en production, vous devriez étudier minutieusement la configuration car une autorité de certification est au centre des efforts de chiffrement d’une organisation.
Création de la demande de certificat
La première étape dans l’utilisation d’un certificat émis par une autorité de certification est de créer le certificat. Pour créer le certificat, vous devez d’abord émettre une demande de certificat à l’aide d’une demande de signature de certificat (CSR). Une fois généré, ce CSR peut alors être envoyé à l’autorité de certification pour émettre le certificat.
Les étapes de cette section fonctionneront sur les déploiements ADCS lorsqu’il s’agit d’une autorité de certification d’entreprise ou d’une autorité de certification autonome. Si vous utilisez une autorité de certification d’entreprise intégrée à l’AD, vous pouvez accélérer l’inscription des certificats sans passer par les étapes de cette section en utilisant l’auto-inscription des certificats ou des modèles de certificats.
Pendant que vous êtes sur le serveur (ServerB dans ce tutoriel), créez la CSR :
- Exécutez certlm.msc pour ouvrir le gestionnaire de certificats Windows.
2. Cliquez avec le bouton droit sur le magasin Personnel et sélectionnez Toutes les tâches —> Opérations avancées —> Créer une demande personnalisée.
3. Pour ce tutoriel, laissez tous les champs par défaut jusqu’à ce que vous arriviez à la page Informations sur le certificat ci-dessous. Lorsque vous y êtes, cliquez sur la liste déroulante Détails et sélectionnez Propriétés.

4. Cliquez sur l’onglet Sujet et changez le Type en Nom commun.
5. Maintenant, saisissez le nom de domaine complet du serveur s’il est joint à un domaine ou simplement le nom d’hôte s’il ne l’est pas, puis cliquez sur Ajouter.

Notez que pour une utilisation avec un écouteur SSL WinRM, vous devez utiliser le nom commun. Les autres options de la liste peuvent être incluses mais ne sont pas nécessaires pour ce déploiement.
6. Cliquez sur l’onglet Extension.
7. Si vous n’utilisez pas l’authentification basée sur des certificats, qui sera abordée plus tard, développez l’en-tête usage étendu de la clé et ajoutez Authentification du serveur. Ce type d’utilisation de clé indique à Windows que le certificat doit être utilisé pour l’authentification d’un serveur. D’autres options incluent l’authentification du client, la signature de code et le chiffrement de documents.
8. Si vous souhaitez configurer l’authentification basée sur des certificats, assurez-vous de choisir Authentification du client, comme indiqué ci-dessous.

9. Ensuite, cliquez sur l’onglet Clé privée et observez les Options de clé. Modifiez la taille de clé par défaut de 1024 à au moins 2048 pour renforcer la sécurité de la paire de clés.
Il existe également des fournisseurs cryptographiques plus puissants disponibles dans Windows, mais vous pourriez rencontrer des problèmes de compatibilité avec des logiciels plus anciens.
10. Fermez la fenêtre Propriétés du certificat et enregistrez vos paramètres en cliquant sur OK et cliquez sur Suivant pour continuer avec les invites.
11. Fournissez maintenant un chemin pour enregistrer la demande de certificat où vous pourrez la récupérer ultérieurement, puis cliquez sur Terminer.
Une fois terminé, vous devriez avoir un fichier de demande de certificat.
Demande de certificat
Une fois la demande créée, vous devrez maintenant soumettre cette demande à votre autorité de certification (CA), qui générera le certificat. Pour cela :
- Naviguez jusqu’à votre serveur ADCS à l’adresse http://<nom du serveur FQDN>/certsrv/certrqxt.asp.

2. Ouvrez le fichier de demande de certificat créé précédemment avec le bloc-notes et copiez le texte du fichier de demande de certificat dans la zone de demande. Rien n’est requis pour Attributs supplémentaires pour ce certificat.
3. Cliquez sur Envoyer. Cela soumettra votre demande à l’autorité de certification. Elle devrait ensuite vous afficher l’ID de la demande, qui sera nécessaire ultérieurement. Enregistrez-le ! Vous en aurez besoin plus tard.
4. Maintenant, connectez-vous au serveur de l’autorité de certification qui fait partie de votre environnement ADCS en utilisant le gestionnaire de certificats Windows sur votre ordinateur local ou via RDP en exécutant certsrv.msc.
5. Cliquez sur Demandes en attente.

6. Cliquez avec le bouton droit sur la demande en attente, cliquez sur Toutes les tâches, puis cliquez sur Approuver. Cela approuvera la demande que vous venez de soumettre en fonction de l’ID de demande de l’étape précédente.
Obtention du certificat
Maintenant que vous avez émis un certificat sur l’autorité de certification, il est temps d’obtenir le certificat sur le serveur sur lequel vous configurez WinRM. Pour ce faire :
- À partir du serveur sur lequel vous configurez WinRM sur SSL, accédez à http://<nom du serveur FQDN>/certckpn.asp. Vous devriez voir une seule demande de certificat en attente.

Si nécessaire, vous pouvez récupérer le certificat public à partir d’une autre machine, mais à partir du serveur sur lequel vous configurez WinRM sur HTTPS, cela simplifie le processus.
2. Sélectionnez la demande que vous avez soumise dans la liste et téléchargez la chaîne de certificats. Vous devez télécharger l’intégralité de la chaîne de certificats si le serveur sur lequel vous configurez WinRM via HTTPS possède votre CA en tant que serveur racine.

3. Ouvrez le fichier de la chaîne de certificats. Vous devriez voir un certificat pour votre serveur et tous les certificats d’autorité de certification supérieurs dans la chaîne. Ci-dessous, win2.lab.int est le certificat demandé et WIN2-CA est le certificat de l’autorité de certification qui a délivré le certificat pour win2.lab.int.

4. Double-cliquez sur l’un des certificats, puis dans la boîte qui s’ouvre, cliquez sur le bouton Installer le certificat. Étant donné que ce certificat sera utilisé par le serveur et non par un utilisateur spécifique, modifiez l’option pour Machine locale.

5. Poursuivez en laissant tout par défaut. Les paramètres par défaut devraient placer le certificat dans le magasin « Certificats racine » de confiance.
6. Maintenant, répétez les étapes 3 à 5 pour chacun des autres certificats de la liste. Si vous avez plus d’un certificat, assurez-vous que tous les autres certificats sont placés dans le magasin « Autorités de certification intermédiaires ».
Créez et configurez maintenant l’écouteur WinRM HTTPS.
Maintenant que tous les certificats sont installés, il est temps de configurer WinRM sur votre serveur pour utiliser ce certificat pour l’écouteur.
Avec PowerShell ouvert sur le serveur WinRM :
- Exécutez la commande ci-dessous pour configurer automatiquement l’écouteur WinRm. La commande
winrm
effectue cette opération en recherchant dans le magasin de certificats de la machine locale un certificat correspondant aux exigences de WinRM.
2. Le pare-feu Windows bloque par défaut le port HTTPS de WinRM, qui est le port 5986
. Pour vous assurer que le pare-feu autorise le port entrant 5986
, exécutez la commande PowerShell suivante :
Testez la connexion SSL WinRM
À ce stade, vous êtes prêt à vous connecter. Utilisez vos cmdlets PSRemoting préférés tels que Invoke-Command
ou Enter-PSSession
pour vous connecter au serveur et utilisez le paramètre UseSSL
.
Assurez-vous toujours que la valeur du paramètre
ComputerName
correspond exactement au nom commun fourni lors de la création du certificat. Si vous essayez de vous connecter à un nom d’hôte différent ou peut-être à l’adresse IP de l’hôte, vous recevrez une erreur de correspondance de certificat entraînant une défaillance de la connexion.
Configuration de l’authentification basée sur les certificats
À ce stade, vous devriez déjà avoir un écouteur WinRM configuré pour utiliser HTTPS. Si c’est le cas, vous pouvez également utiliser un certificat d’authentification utilisateur pour vous authentifier en tant qu’utilisateur local sur le serveur distant. L’utilisation d’un certificat utilisateur est l’une des méthodes les plus sécurisées, mais cela prend du temps à configurer. Vous constaterez également que c’est beaucoup de travail répétitif car chaque certificat est unique pour la machine cliente individuelle.
L’authentification basée sur les certificats fonctionne uniquement avec les comptes utilisateurs locaux et non les utilisateurs de domaine.
En supposant que vous ayez demandé un certificat d’authentification client tel que décrit dans la section Création de la demande de certificat, poursuivez la lecture :
Activation de l’authentification par certificat et mappage de l’utilisateur sur le serveur
- Sur le serveur, exécutez la commande
Set-Item
pour autoriser l’authentification basée sur les certificats.
2. Ensuite, exécutez Get-ChildItem
pour consulter le magasin Autorités de certification racines de confiance et trouver l’empreinte digitale de l’AC qui a délivré le certificat d’authentification client. Pour ce faire, filtrez les certificats en fonction du sujet qui contient le nom de votre AC.
3. Exécutez la commande ci-dessous, où SubjectName
est le sujet du certificat utilisateur que vous avez fourni lors de la création du certificat
L’empreinte digitale de l’AC (CAThumbprint
) est celle collectée avec la commande précédente, puis les informations d’identification demandées sont le nom d’utilisateur et le mot de passe de l’utilisateur local qui sera utilisé pour l’authentification basée sur les certificats.
Test de l’authentification basée sur les certificats
Maintenant que la correspondance entre le certificat et l’utilisateur est configurée, utilisez le certificat sur la machine cliente pour vous authentifier sans fournir d’informations d’identification.
Sur le client dans PowerShell, obtenez l’empreinte digitale du certificat client en consultant le magasin de certificats personnels.
Ensuite, spécifiez l’empreinte digitale dans le paramètre CertificateThumbprint
d’une commande PSRemoting, comme indiqué ci-dessous.
Notez que l’authentification basée sur des certificats n’est utilisable qu’avec un écouteur HTTPS, l’option
-UseSSL
est donc implicite, contrairement aux autres méthodes d’authentification où vous devez spécifier d’utiliser SSL.
Étapes suivantes
Maintenant que vous avez appris comment configurer WinRM sur SSL, en savoir plus sur PSRemoting dans notre article PowerShell Remoting: Le guide ultime!
Vous souhaitez en savoir plus sur PowerShell en général, y compris sur PSRemoting? Consultez notre livre PowerShell pour les administrateurs système!