Utiliser le magasin de certificats Windows pour Devolutions Gateway

Si vos clients échouent à se connecter avec Devolutions Gateway, s'assurer que le certificat contient la chaîne entière. Cette chaîne de certificats inclut tous les certificats intermédiaires. Par exemple : Autorité de Certification Racine – Autorité de Certification Sécurisée – Certificat XYZ Acheté.

Il est possible d'utiliser le magasin de certificats Windows comme source de certificat TLS. Au lieu d'utiliser un fichier, stocker et gérer vos certificats avec Windows. À la date de rédaction, cette fonctionnalité n'est pas exposée dans la console de configuration GUI de Devolutions Gateway. Pour configurer, vous devez soit modifier directement le fichier gateway.json soit utiliser le module Devolutions.PowerShell.

Avec la nouvelle fonctionnalité, quelques paramètres supplémentaires sont disponibles pour configurer la source du certificat.

Si vous avez une configuration TlsCertificateFile et/ou TlsPrivateKeyFile définie précédemment, il n'est pas nécessaire de la supprimer car TlsCertificateSource indique à Devolutions Gateway où chercher le certificat.

  • TlsCertificateSource (chaîne) : Source pour le certificat TLS, valeurs possibles ci-dessous.
    • External (par défaut) : Récupérer un certificat stocké sur le système de fichiers. Voir les options TlsCertificateFile, TlsPrivateKeyFile, et TlsPrivateKeyPassword.
    • System : Récupérer le certificat géré par le magasin de certificats système. Voir les options TlsCertificateSubjectName, TlsCertificateStoreName, et TlsCertificateStoreLocation.
  • TlsCertificateSubjectName (chaîne) : Nom du sujet du certificat pour TLS lors de l'utilisation de la source Système.
  • TlsCertificateStoreName (chaîne) : Nom du Magasin de Certificats Système à utiliser pour TLS (par défaut est My).
  • TlsCertificateStoreLocation (chaîne) : Emplacement du Magasin de Certificats Système à utiliser pour TLS, valeurs possibles ci-dessous.
    • CurrentUser (par défaut)
    • CurrentService
    • LocalMachine

Importer le certificat dans le magasin de certificats Windows

D'abord, importer votre certificat dans le magasin de certificats Windows. Windows prend en charge les formats de certificats suivants :

  • Certificat X.509 - *.cer, *.crt
  • Échange d'Informations Personnelles - *.pfx, *.p12
  • Magasin de certificats sérialisé Microsoft - *.sst
  • Certificats PKCS #7 - *.spc, *.p7b

Si vous utilisez la méthode External via TlsCertificateSource, alors Devolutions Gateway ne prend en charge que le regroupement de la clé publique et de la clé privée dans un fichier PFX (PKCS#12). Sinon, vous devrez définir le paramètre TlsPrivateKeyFile également.

Convertir un certificat X.509

Devolutions Gateway nécessite une clé privée avec le certificat TLS ; par conséquent, vous pourriez avoir besoin de combiner la clé publique avec sa clé privée. Voici deux méthodes : Remote Desktop Manager et l'utilitaire Windows intégré certutil.

Utiliser Remote Desktop Manager

L'entrée Certificat X.509 peut être utilisée pour importer ledit certificat et l'exporter dans plusieurs formats différents, y compris PFX.

  1. Dans Remote Desktop Manager, cliquer sur Nouvelle EntréeGestion des IdentifiantsGénéralCertificat X.509.
    Certificat X.509
    Certificat X.509
  2. Sélectionner le certificat et cliquer sur Ouvrir.
    Ouvrir
    Ouvrir
  3. Cliquer sur Suivant.
    Suivant
    Suivant
  4. Cliquer sur les points de suspension et sélectionner la Clé privée.
    Bouton points de suspension
    Bouton points de suspension
  5. Cliquer sur Ouvrir.
    Fichier KEY
    Fichier KEY

    La Clé privée doit être dans l'extension .key.

  6. Cliquer sur Terminer.
    Terminer
    Terminer
  7. Remplir les informations, puis cliquer sur Ajouter.
    Champs d'informations
    Champs d'informations
  8. Sélectionner l'entrée et cliquer sur Enregistrer le Certificat Sous (également disponible dans le menu contextuel clic droit).
    Enregistrer le Certificat Sous
    Enregistrer le Certificat Sous
  9. Dans le champ Format d'Exportation choisir Échange d'Informations Personnelles (pfx).
  10. Choisir où le fichier sera sauvegardé en cliquant sur les points de suspension.
  11. Entrer un mot de passe fort, puis cliquer sur Exporter.
    Exporter le Certificat X.509
    Exporter le Certificat X.509

Utiliser l'utilitaire Windows certutil

Utiliser l'utilitaire Windows certutil intégré pour combiner un fichier de certificat (.crt ou .cer) et sa clé privée (.key). Les deux fichiers doivent avoir le même nom. certutil -MergePFX file.crt file.pfx

certutil
certutil

Importer le certificat

Après avoir acquis le fichier de certificat et le fichier de clé privée du certificat, l'importer dans Windows.

  1. Installer le certificat :
    • Si Windows détecte automatiquement le certificat, double-cliquer dessus et choisir Installer le Certificat... ; ou
    • Ouvrir certmgr.msc vers l'emplacement de magasin souhaité (LocalMachine ou CurrentUser), clic droit sur l'emplacement voulu (ex : Personnel/Certificats) et choisir Toutes les TâchesImporter.
      Installer le Certificat...
      Installer le Certificat...
  2. Choisir l'une des options suivantes et cliquer sur Suivant :
    • Sélectionner automatiquement le magasin de certificats en fonction du type de certificat ; ou
    • Placer tous les certificats dans le magasin suivant et cliquer sur Parcourir... pour choisir un dossier.
      Certificat X.509
      Certificat X.509
  3. Compléter l'importation en cliquant sur Terminer.
    Assistant d'Importation de Certificat
    Assistant d'Importation de Certificat

Configurer le magasin de certificats Windows via gateway.json

L'emplacement par défaut du fichier gateway.json est dans le répertoire %ProgramData%\Devolutions\Gateway.

S'assurer que le fichier est un .json valide en le testant avec :

$Config = ("{0}\Devolutions\Gateway\gateway.json" -F $Env:ProgramData)

Essayer {
  Get-Content -Path $Config | ConvertFrom-JSON -ErrorAction 'Stop'
} Attraper {
  $PSItem[0].Exception.Message
}

Cela fonctionne avec PowerShell 5.1 et les versions ultérieures (la version recommandée à utiliser est PowerShell 7.x).

Get-Content
Get-Content

Une configuration typique est montrée ci-dessous. Vos valeurs peuvent différer, surtout le Nom du Sujet, car cela reflétera le nom de domaine auquel Devolutions Gateway répond. Les valeurs importantes à changer sont :

  • TlsCertificateSource - System
  • TlsCertificateSubjectName - gateway.ad.it-help.ninja
  • TlsCertificateStoreName - My
  • TlsCertificateStoreLocation - LocalMachine

Un exemple du fichier de configuration entier :

{
  "Id": "c912b379-8c34-449d-8ff3-3aa20a9cc3e4",
  "Hostname": "gateway.ad.it-help.ninja",
  "TlsCertificateFile": "server.crt",
  "TlsPrivateKeyFile": "server.key",
  "TlsCertificateSource": "System",
  "TlsCertificateSubjectName": "gateway.ad.it-help.ninja",
  "TlsCertificateStoreName": "My",
  "TlsCertificateStoreLocation": "LocalMachine",
  "ProvisionerPublicKeyFile": "provisioner.pem",
  "Listeners": [
    {
      "InternalUrl": "https://*:7171",
      "ExternalUrl": "https://*:7171"
    },
    {
      "InternalUrl": "tcp://*:8181",
      "ExternalUrl": "tcp://*:8181"
    }
  ]
}
  1. Exécuter le script ci-dessus.
  2. Ouvrir services.msc.
  3. Clic droit sur Service Devolutions Gateway et sélectionner Redémarrer.
    Redémarrer
    Redémarrer
  4. Vérifier si Devolutions Gateway fonctionne correctement en naviguant vers https://{FQDN}:7171/jet/health (en remplaçant {FQDN} par votre adresse DNS de Gateway) avec un navigateur web.

Configurer le magasin de certificats Windows via PowerShell

Le Devolutions Gateway peut également être configuré via des commandes PowerShell. Le module PowerShell Devolutions Gateway expose de nombreuses commandes pour le configurer. Par défaut, une installation de Devolutions Gateway inclut le module dans le répertoire d'installation. Importer le module via la commande suivante :

# Importer le Module
Import-Module -Name "C:\Program Files\Devolutions\Gateway\PowerShell\Modules\DevolutionsGateway"
# Voir les Modules importés
Get-Module

Import-Module
Import-Module

Une autre méthode pour rendre le module facilement accessible est de l'installer via la commande suivante :

# Installer le module DevolutionsGateway
Install-Module -Name 'DevolutionsGateway'
# Mettre à jour le module si installé via la méthode ci-dessus (ne mettra pas à jour la version groupée installée avec Gateway)
Update-Module -Name 'DevolutionsGateway'
# Importer le Module
Import-Module -Name 'DevolutionsGateway'
# Voir les modules importés pour vérifier que le module DevolutionsGateway est disponible
Get-Module

Install-Module
Install-Module

Une fois importé, vous pouvez voir la configuration actuelle via la commande suivante :

Get-DGatewayConfig

Get-DGatewayConfig
Get-DGatewayConfig

Pour indiquer à Devolutions Gateway d'utiliser le magasin Windows, utiliser la commande suivante :

# Mettre à jour la configuration ; cela ne supprimera aucun paramètre existant, seulement configurer ceux définis.
# Remplacer l'exemple '{FQDN}` par le nom de domaine pleinement qualifié de l'adresse de la Gateway
Set-DGatewayConfig -TlsCertificateSource "System" -TlsCertificateSubjectName "{FQDN}" -TlsCertificateStoreLocation "LocalMachine" -TlsCertificateStoreName "My"
# Afficher la configuration mise à jour
Get-DGatewayConfig

Set-DGatewayConfig
Set-DGatewayConfig

Redémarrer le service pour que la configuration prenne effet.

Restart-Service -Name 'DevolutionsGateway'

Restart-Service -Name 'DevolutionsGateway'
Restart-Service -Name 'DevolutionsGateway'

Vérifier si Devolutions Gateway fonctionne correctement en naviguant vers https://{FQDN}:7171/jet/health avec un navigateur web.

Donnez-nous vos commentaires