> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/gateway/de/knowledge-base/how-to-articles/use-windows-certificate-store-for-devolutions-gateway.md).

# Windows-Zertifikatspeicher für Devolutions Gateway verwenden

Konfigurieren Sie Devolutions Gateway so, dass das TLS-Zertifikat aus dem Windows-Zertifikatspeicher anstatt aus einer Zertifikatsdatei bezogen wird.

{% hint style="warning" %}
Wenn Ihre Clients keine Verbindung mit Devolutions Gateway herstellen können, stellen Sie sicher, dass das Zertifikat die gesamte Kette enthält. Diese Zertifikatskette umfasst alle Zwischenzertifikate. Zum Beispiel: Root-Zertifizierungsstelle – Secure-Zertifizierungsstelle – erworbenes XYZ-Zertifikat.
{% endhint %}

Es ist möglich, den Windows-Zertifikatspeicher als TLS-Zertifikatsquelle zu verwenden. Anstatt eine Datei zu verwenden, speichern und verwalten Sie Ihre Zertifikate mit Windows. Zum Zeitpunkt der Erstellung dieses Artikels ist diese Funktionalität nicht in der GUI der Devolutions Gateway-Konfigurationskonsole verfügbar. Zur Konfiguration müssen Sie entweder die Datei gateway.json direkt bearbeiten oder das Modul Devolutions.PowerShell verwenden.

Mit der neuen Funktionalität stehen [einige zusätzliche Parameter](https://github.com/Devolutions/devolutions-gateway#configuration) zur Verfügung, um die Quelle des Zertifikats zu konfigurieren.

{% hint style="info" %}
Wenn Sie zuvor eine Konfiguration für `TlsCertificateFile` und/oder `TlsPrivateKeyFile` definiert haben, ist ein Entfernen nicht erforderlich, da `TlsCertificateSource` Devolutions Gateway mitteilt, wo nach dem Zertifikat gesucht werden soll.
{% endhint %}

* **TlsCertificateSource** (Zeichenfolge): Quelle für das TLS-Zertifikat, mögliche Werte siehe unten.
  * **External** (Standard): Ruft ein im Dateisystem gespeichertes Zertifikat ab. Siehe die Optionen `TlsCertificateFile`, `TlsPrivateKeyFile` und `TlsPrivateKeyPassword`.
  * **System**: Ruft das vom Systemzertifikatspeicher verwaltete Zertifikat ab. Siehe die Optionen `TlsCertificateSubjectName`, `TlsCertificateStoreName` und `TlsCertificateStoreLocation`.
* **TlsCertificateSubjectName** (Zeichenfolge): Antragstellername des Zertifikats für TLS bei Verwendung der Quelle System.
* **TlsCertificateStoreName** (Zeichenfolge): Name des Systemzertifikatspeichers, der für TLS verwendet werden soll (Standard ist My).
* **TlsCertificateStoreLocation** (Zeichenfolge): Speicherort des Systemzertifikatspeichers, der für TLS verwendet werden soll, mögliche Werte siehe unten.
  * **CurrentUser** (Standard)
  * **CurrentService**
  * **LocalMachine**

## Importieren des Zertifikats in den Windows-Zertifikatspeicher

Importieren Sie zunächst Ihr Zertifikat in den Windows-Zertifikatspeicher. Windows unterstützt die folgenden Zertifikatsformate:

* X.509-Zertifikat - \*.cer, \*.crt
* Privater Informationsaustausch - \*.pfx, \*.p12
* Microsoft Serialized Certificate Store - \*.sst
* PKCS #7-Zertifikate - \*.spc, \*.p7b

{% hint style="info" %}
Bei Verwendung der Methode `External` über `TlsCertificateSource` unterstützt Devolutions Gateway nur die Bündelung des öffentlichen und des privaten Schlüssels in einer PFX-Datei (PKCS#12). Andernfalls müssen Sie zusätzlich den Parameter `TlsPrivateKeyFile` definieren.
{% endhint %}

### Konvertieren eines X.509-Zertifikats

Devolutions Gateway benötigt einen privaten Schlüssel zusammen mit dem TLS-Zertifikat; daher müssen Sie möglicherweise den öffentlichen Schlüssel mit seinem privaten Schlüssel kombinieren. Hier sind zwei Methoden: [Remote Desktop Manager](#using-remote-desktop-manager) und das integrierte [Windows-Dienstprogramm certutil](#using-the-windows-certutil-utility).

#### Remote Desktop Manager verwenden

Der Eintrag ***X.509-Zertifikat*** kann verwendet werden, um das genannte Zertifikat zu importieren und in verschiedenen Formaten, einschließlich PFX, zu exportieren.

1. Klicken Sie in Remote Desktop Manager auf ***Neuer Eintrag*** – ***Verwaltung von Anmeldeinformationen*** – ***Allgemein*** – ***X.509-Zertifikat***.
2. Wählen Sie das Zertifikat aus und klicken Sie auf ***Öffnen***.
3. Klicken Sie auf ***Weiter***.
4. Klicken Sie auf die Auslassungspunkte und wählen Sie den ***privaten Schlüssel*** aus.
5. Klicken Sie auf ***Öffnen***.

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>Der <em><strong>private Schlüssel</strong></em> muss die Erweiterung <code>.key</code> haben.</p></div>
6. Klicken Sie auf ***Fertigstellen***.
7. Geben Sie die Informationen ein und klicken Sie dann auf ***Hinzufügen***.
8. Wählen Sie den Eintrag aus und klicken Sie auf ***Zertifikat speichern unter*** (auch im Kontextmenü der rechten Maustaste verfügbar).
9. Wählen Sie im Feld ***Exportformat*** die Option ***Personal Information Exchange (pfx)***.
10. Wählen Sie durch Klicken auf die Auslassungspunkte aus, wo die Datei gespeichert wird.
11. Geben Sie ein starkes Passwort ein und klicken Sie dann auf ***Exportieren***.

#### Verwendung des Windows-Dienstprogramms `certutil`

Verwenden Sie das integrierte Windows-Dienstprogramm `certutil`, um eine Zertifikatsdatei (`.crt` oder `.cer`) und ihren privaten Schlüssel (`.key`) zu kombinieren. Beide Dateien müssen denselben Namen haben. `certutil -MergePFX file.crt file.pfx`

### Importieren des Zertifikats

Nachdem Sie das Zertifikat und die Datei mit dem privaten Schlüssel des Zertifikats erhalten haben, importieren Sie es in Windows.

1. Installieren Sie das Zertifikat:
   * Wenn Windows das Zertifikat automatisch erkennt, doppelklicken Sie darauf und wählen Sie ***Zertifikat installieren...***; oder
   * Öffnen Sie `certmgr.msc` am vorgesehenen Speicherort (`LocalMachine` oder `CurrentUser`), klicken Sie mit der rechten Maustaste auf den gewünschten Speicherort (z. B.: ***Eigene Zertifikate/Zertifikate***) und wählen Sie ***Alle Aufgaben*** – ***Importieren***.
2. Wählen Sie eine der folgenden Optionen aus und klicken Sie auf ***Weiter***:
   * ***Zertifikatspeicher automatisch anhand des Zertifikattyps auswählen***; oder
   * ***Alle Zertifikate in folgendem Speicher speichern*** und klicken Sie auf ***Durchsuchen...***, um einen Ordner auszuwählen.
3. Schließen Sie den Import ab, indem Sie auf ***Fertigstellen*** klicken.

## Dem Devolutions Gateway-Dienst Leseberechtigung für den privaten Schlüssel des Zertifikats erteilen

Standardmäßig führt Devolutions Gateway seinen Dienst über das Konto Netzwerkdienst aus. Um ein Zertifikat aus dem lokalen Zertifikatspeicher zu verwenden, stellen Sie sicher, dass das Konto Netzwerkdienst Leseberechtigungen für den privaten Schlüssel des Zertifikats besitzt.

1. Öffnen Sie den lokalen Zertifikatspeicher und navigieren Sie zum Zertifikat.
2. Klicken Sie mit der rechten Maustaste auf das Zertifikat und wählen Sie ***Alle Aufgaben*** – ***Private Schlüssel verwalten***.
3. Klicken Sie, um einen Benutzernamen hinzuzufügen.
4. Schreiben Sie "NETWORK SERVICE" in das Feld für die Objektnamen und klicken Sie dann auf ***OK***.
5. Wählen Sie den neuen Benutzernamen ***NETWORK SERVICE*** aus und erlauben Sie dafür die Berechtigung ***Lesen***.
6. Klicken Sie auf ***Übernehmen*** und dann auf ***OK***.

## Konfigurieren des Windows-Zertifikatspeichers über gateway.json

Der Standardspeicherort der Datei `gateway.json` ist das Verzeichnis **%ProgramData%\Devolutions\Gateway**.

Stellen Sie sicher, dass die Datei eine gültige `.json`-Datei ist, indem Sie sie folgendermaßen testen:

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

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

Dies funktioniert mit PowerShell 5.1 und späteren Versionen (die empfohlene Version ist PowerShell 7.x).

Eine typische Konfiguration ist unten dargestellt. Ihre Werte können abweichen, insbesondere der ***Antragstellername***, da dieser den Domänennamen widerspiegelt, auf den Devolutions Gateway antwortet. Die wichtigen zu ändernden Werte sind:

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

Ein Beispiel für die gesamte Konfigurationsdatei:

```json
{
  "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. Führen Sie das obige Skript aus.
2. Öffnen Sie `services.msc`.
3. Klicken Sie mit der rechten Maustaste auf ***Devolutions Gateway Service*** und wählen Sie ***Neu starten***.
4. Überprüfen Sie, ob Devolutions Gateway korrekt ausgeführt wird, indem Sie mit einem Webbrowser zu `https://{FQDN}:7171/jet/health` navigieren (ersetzen Sie `{FQDN}` durch Ihre Gateway-DNS-Adresse).

## Konfigurieren des Windows-Zertifikatspeichers über PowerShell

Devolutions Gateway kann auch über PowerShell-Befehle konfiguriert werden. Das [Devolutions Gateway PowerShell-Modul](https://www.powershellgallery.com/packages/DevolutionsGateway/) stellt viele Befehle zu seiner Konfiguration bereit. Standardmäßig enthält eine Installation von Devolutions Gateway das Modul im Installationsverzeichnis. Importieren Sie das Modul folgendermaßen:

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

Eine weitere Methode, um das Modul leicht zugänglich zu machen, ist die Installation über den folgenden Befehl:

```powershell
# 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
```

Nach dem Import können Sie die aktuelle Konfiguration mit dem folgenden Befehl anzeigen:

```powershell
Get-DGatewayConfig
```

Um Devolutions Gateway anzuweisen, den Windows-Speicher zu verwenden, verwenden Sie den folgenden Befehl:

```powershell
# 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
```

Starten Sie den Dienst neu, damit die Konfiguration wirksam wird.

```powershell
Restart-Service -Name 'DevolutionsGateway'
```

Überprüfen Sie, ob Devolutions Gateway korrekt ausgeführt wird, indem Sie mit einem Webbrowser zu `https://{FQDN}:7171/jet/health` navigieren.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/gateway/de/knowledge-base/how-to-articles/use-windows-certificate-store-for-devolutions-gateway.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
