Utiliser le magasin de certificats Windows pour Devolutions Gateway

Si vos clients échouent à se connecter avec Devolutions Gateway, assurez-vous que le certificat contient toute la chaîne. Cette chaîne de certificat inclut 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. Au moment de la rédaction, cette fonctionnalité n'est pas exposée dans l'interface de la console de configuration Devolutions Gateway GUI. Pour configurer, modifier directement le fichier gateway.json ou 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 précédemment définie `TlsCertificateFile` et/ou `TlsPrivateKeyFile`, la suppression n'est pas nécessaire car `TlsCertificateSource` indique à Devolutions Gateway où chercher le certificat.

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

Importer le certificat dans le magasin de certificats Windows

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

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

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

Convertir un certificat X.509

Devolutions Gateway requiert une clé privée avec le certificat TLS ; par conséquent, il peut être nécessaire de combiner la clé publique avec sa clé privée. Voici deux méthodes : Remote Desktop Manager et l'utilitaire Windows intégré certutil.

Utilisation de 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.

    X.509 Certificate
    X.509 Certificate

  2. Sélectionner le certificat et cliquer sur Ouvrir.

    Open
    Open

  3. Cliquer sur Suivant.

    Next
    Next

  4. Cliquer sur les points de suspension et sélectionner la clé privée.

    Ellipsis button
    Ellipsis button

  5. Cliquer sur Ouvrir.

    KEY file
    KEY file

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

  6. Cliquer sur Terminer.

    Finish
    Finish

  7. Remplir les informations, puis cliquer sur Ajouter.

    Information fields
    Information fields

  8. Sélectionner l'entrée et cliquer sur Enregistrer le certificat sous (aussi disponible dans le menu contextuel du clic droit).

    Save Certificate As
    Save Certificate As

  9. Dans le champ Format d'Exportation choisir Échange de Renseignements Personnels (pfx).

  10. Choisir où le fichier sera enregistré en cliquant sur les points de suspension.

  11. Entrer un mot de passe fort, puis cliquer sur Exporter.

    Export X.509 Certificate
    Export X.509 Certificate

Utiliser l'utilitaire certutil de Windows

Utiliser l'utilitaire intégré Windows certutil 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 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 à l'emplacement souhaité du magasin (LocalMachine ou CurrentUser), faire un clic droit sur l'emplacement souhaité (ex : Personnel/Certificats) et choisir Toutes les tâchesImporter.
      Install Certificate...
      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.
      X.509 Certificate
      Certificat X.509
  3. Compléter l'importation en cliquant sur Terminer.
    Certificate Import Wizard
    Assistant d'importation de certificat

Donner au service Devolutions Gateway l'autorisation de lecture sur la clé privée du certificat

Par défaut, Devolutions Gateway exécute son service en utilisant le compte Service Réseau. Pour utiliser un certificat du magasin de certificats local, s'assurer que le compte Service Réseau a des autorisations de lecture sur la clé privée du certificat.

  1. Ouvrir le magasin de certificats local et naviguer jusqu'au certificat.
  2. Faire un clic droit sur le certificat et sélectionner Toutes les tâchesGérer les clés privées.
    All Tasks – Manage Private Keys
    Toutes les tâches – Gérer les clés privées
  3. Cliquer pour ajouter un nom d'utilisateur.
    Add a user name
    Ajouter un nom d'utilisateur
  4. Écrire "SERVICE RÉSEAU" dans le champ des noms d'objet puis cliquer sur OK.
    Ajouter le nom d'utilisateur NETWORK SERVICE
    Ajouter le nom d'utilisateur NETWORK SERVICE
  5. Sélectionner le nouveau nom d'utilisateur SERVICE RÉSEAU et octroyer la permission Lire dessus.
    Octroyer la permission Lire
    Octroyer la permission Lire
  6. Cliquer sur Appliquer, puis cliquer sur OK.

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)

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

Cela fonctionne avec PowerShell 5.1 et les versions plus récentes (la version recommandée est PowerShell 7.x).

Get-Content
Get-Content

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

  • TlsCertificateSource - Système
  • 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. Faire un 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 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 Devolutions Gateway PowerShell 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 ce qui suit :

# Import the Module
Import-Module -Name "C:\Program Files\Devolutions\Gateway\PowerShell\Modules\DevolutionsGateway"
# View the imported Modules
Get-Module

Import-Module
Import-Module

Une autre méthode pour rendre le module facilement accessible est de l'installer via ce qui suit :

# Install the DevolutionsGateway module
Install-Module -Name 'DevolutionsGateway'
# Update the module if installed via the above method (will not update the bundled version installed with Gateway)
Update-Module -Name 'DevolutionsGateway'
# Import the Module
Import-Module -Name 'DevolutionsGateway'
# View the imported modules to verify the DevolutionsGateway module is available
Get-Module

Install-Module
Install-Module

Une fois importé, 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 :

# Update the configuration; this will not remove any existing parameters, only configure those defined.
# Replace the '{FQDN}` example with the fully-qualified DNS name of the Gateway address
Set-DGatewayConfig -TlsCertificateSource "System" -TlsCertificateSubjectName "{FQDN}" -TlsCertificateStoreLocation "LocalMachine" -TlsCertificateStoreName "My"
# Display the updated configuration
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.

Devolutions Forum logo Donnez-nous vos commentaires