web-dev-qa-db-fra.com

Comment fournir un certificat de serveur vérifié pour les connexions RDP (Remote Desktop) à Windows 10

Nous avons une machine Windows 10 Pro dans notre bureau qui a un port ouvert sur Internet pour les connexions de bureau à distance entrantes (un ‘hôte’). Il est bien protégé par un mot de passe complexe et un nombre limité de tentatives autorisées et uniquement par TLS version 1.1 ou supérieure, mais il ne présente pas de certificat SSL vérifié de manière externe, mais uniquement le certificat auto-signé auto-généré fourni par les services de bureau à distance. nous donne deux problèmes:

  1. Nous ne pouvons pas être totalement confiants lors de la connexion à distance. Nous nous connectons réellement à cette machine et non à une connexion détournée.
  2. Notre site n'aboutit pas au contrôle de conformité PCI-DSS 3.1 (requis car nous utilisons une machine de paiement par carte de débit/crédit au point de vente qui se connecte via Internet). La vérification signale des erreurs fatales sur ce port de bureau distant connecté à Internet: "Certificat auto-signé SSL" et "Certificat SSL avec un nom d'hôte incorrect".

Comment faire en sorte qu'un ordinateur Windows 10 Pro (ou Windows 7/8/8.1 Pro) agissant en tant que serveur/hôte présente un certificat SSL approprié pour la vérification de Remote Desktop?

10
gogoud

Vous pouvez configurer cette machine hôte pour qu'elle utilise et présente votre certificat SSL (existant, acheté) vérifié de manière externe (les instructions fonctionnent probablement aussi pour Windows 8 et 8.1, peuvent ou ne peuvent pas fonctionner pour Windows 7) (certaines parties sont basées sur un Microsoft KB 2001849 ):

Tout d’abord, vous devez avoir acheté un certificat authentifié et authentifié.

Si vous avez ce certificat dans un fichier au format pkcs12 (par exemple, une extension pfx), vous pouvez afficher l’empreinte SHA1 sous Linux ou Cygwin (vous en aurez besoin ci-dessous):

openssl pkcs12 -in mysite.pfx -nodes|openssl x509 -noout -fingerprint

Sinon, si vous avez les fichiers de certificat individuels sur votre serveur Linux sous/etc/ssl (/etc/ssl/certs/mysite.crt, /etc/ssl/mysite.ca-bundle et /etc/ssl/private/mysite.key ) vous pouvez créer un fichier pfx et obtenir l’empreinte SHA1 ainsi:

  1. Créez un fichier pfx pour votre certificat, si vous n'en avez pas déjà un (ici: mysite.pfx) - définissez un bon mot de passe à la demande: Sudo openssl pkcs12 -export -out mysite.pfx -inkey/etc/ssl/private/mysite .pem -in /etc/ssl/certs/mysite.crt -certfile /etc/ssl/mysite.ca-bundle
  2. Déplacez ou copiez ce fichier pfx selon vos besoins pour qu'il soit accessible par votre ordinateur hôte Windows.
  3. Voir l'empreinte SHA1 de la clé (vous en aurez besoin ci-dessous): openssl x509 -in /etc/ssl/certs/mysite.crt -noout -fingerprint

Importez un fichier au format pkcs12 (pfx, par exemple) dans le magasin de certificats personnels de la machine hôte Windows:

  1. Démarrer/Exécuter/mmc
  2. Fichier/Ajouter Supprimer composant logiciel enfichable/Certificats/Ajouter/Compte d'ordinateur/Ordinateur local/OK
  3. Dans la fenêtre de gauche, cliquez avec le bouton droit sur Certificats (ordinateur local)/Personnel, choisissez Toutes les tâches/Importer…
  4. Localisez le fichier pfx et importez-le, je suggère que pour des raisons de sécurité, vous ne le rendiez pas exportable.
  5. En développant vos personnels/certificats, vous devriez maintenant voir 3 certificats, l'un d'entre eux étant votre certificat de site (par exemple, mysite.com). Cliquez avec le bouton droit sur le certificat de ce site et cliquez avec le bouton droit de la souris, choisissez Toutes les tâches/Gérer les clés privées…
  6. Ajoutez un utilisateur ‘NETWORK SERVICE’ avec uniquement l’autorisation de lecture (pas un contrôle total), puis cliquez sur Appliquer.
  7. Fermer mmc

Utilisez regedit pour ajouter une nouvelle valeur binaire appelée SSLCertificateSHA1Hash dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp. La valeur dont il a besoin est l’empreinte SHA1 du certificat obtenu ci-dessus: cliquez avec le bouton droit de la souris sur la nouvelle valeur, choisissez Modifier, puis saisissez les codes hexadécimaux de manière séquentielle (sans point ni virgule ni virgule, les lettres ne sont pas sensibles à la casse) - il y a 20 paires hexagonales en tout (40 caractères).

Vous devrez peut-être redémarrer l'ordinateur hôte ou redémarrer les services Bureau à distance (à partir de Services.msc) avant que cela ne fonctionne.

Maintenant, après avoir établi une connexion de bureau à distance avec cet hôte en utilisant le nom de site correct (par exemple, mysite.com), vous devriez voir un cadenas verrouillé sur le côté gauche de la barre de connexion supérieure: en cliquant sur celui-ci, l'identité de la l'ordinateur a été vérifié. Un port ouvert depuis Internet vers cet hôte doit maintenant passer le test de nom d’hôte PCI-DSS 3.1.

13
gogoud

Voici les étapes de base que j'utilise:

Obtenez un certificat valide pour l'hôte (il ne doit pas nécessairement provenir d'une autorité de certification externe, mais toutes vos machines doivent lui faire confiance). Assurez-vous qu'il a le bon nom d'hôte, j'ai eu des problèmes avec les certificats génériques.

Installez le cert sur l'hôte, comme:

certutil.exe -p myPassword -importPFX c:\mycert.pfx noExport

recherchez l'empreinte du cert, soit dans l'interface utilisateur, soit dans PowerShell:

$tp = (ls Cert:\LocalMachine\my | WHERE {$_.Subject -match "something unique in your certs subject field" } | Select -First 1).Thumbprint

dites maintenant à Remote Desktop d'utiliser ce certificat:

& wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="$tp" 

aucun redémarrage requis

4
Peter Hahndorf