> 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/it/knowledge-base/how-to-articles/use-windows-certificate-store-for-devolutions-gateway.md).

# Utilizzare l'archivio certificati di Windows per Devolutions Gateway

{% hint style="warning" %}
Se i suoi client non riescono a connettersi a Devolutions Gateway, verifichi che il certificato contenga l'intera catena. Questa catena di certificati include eventuali certificati intermedi. Ad esempio: Autorità di certificazione radice – Autorità di certificazione sicura – Certificato XYZ acquistato.
{% endhint %}

È possibile utilizzare l'archivio certificati di Windows come origine del certificato TLS. Invece di utilizzare un file, memorizzi e gestisca i suoi certificati con Windows. Al momento della stesura di questo documento, questa funzionalità non è esposta nell'interfaccia grafica della console di configurazione di Devolutions Gateway. Per configurarla, deve modificare direttamente il file gateway.json oppure utilizzare il modulo Devolutions.PowerShell.

Con la nuova funzionalità, sono disponibili [alcuni parametri aggiuntivi](https://github.com/Devolutions/devolutions-gateway#configuration) per configurare l'origine del certificato.

{% hint style="info" %}
Se ha già definito una configurazione `TlsCertificateFile` e/o `TlsPrivateKeyFile`, non è necessario rimuoverla poiché `TlsCertificateSource` indica a Devolutions Gateway dove cercare il certificato.
{% endhint %}

* **TlsCertificateSource** (stringa): origine del certificato TLS, i valori possibili sono indicati di seguito.
  * **External** (predefinito): recupera un certificato memorizzato nel file system. Veda le opzioni `TlsCertificateFile`, `TlsPrivateKeyFile` e `TlsPrivateKeyPassword`.
  * **System**: recupera il certificato gestito dall'archivio certificati di sistema. Veda le opzioni `TlsCertificateSubjectName`, `TlsCertificateStoreName` e `TlsCertificateStoreLocation`.
* **TlsCertificateSubjectName** (stringa): nome del soggetto del certificato per TLS quando si utilizza l'origine System.
* **TlsCertificateStoreName** (stringa): nome dell'archivio certificati di sistema da utilizzare per TLS (il valore predefinito è My).
* **TlsCertificateStoreLocation** (stringa): posizione dell'archivio certificati di sistema da utilizzare per TLS, i valori possibili sono indicati di seguito.
  * **CurrentUser** (predefinito)
  * **CurrentService**
  * **LocalMachine**

## Importazione del certificato nell'archivio certificati di Windows

Innanzitutto, importi il suo certificato nell'archivio certificati di Windows. Windows supporta i seguenti formati di certificato:

* Certificato X.509 - \*.cer, \*.crt
* Personal Information Exchange - \*.pfx, \*.p12
* Archivio certificati serializzato Microsoft - \*.sst
* Certificati PKCS #7 - \*.spc, \*.p7b

{% hint style="info" %}
Se utilizza il metodo `External` tramite `TlsCertificateSource`, Devolutions Gateway supporta solo la combinazione della chiave pubblica e privata in un file PFX (PKCS#12). In caso contrario, dovrà definire anche il parametro `TlsPrivateKeyFile`.
{% endhint %}

### Conversione di un certificato X.509

Devolutions Gateway richiede una chiave privata con il certificato TLS; pertanto, potrebbe essere necessario combinare la chiave pubblica con la relativa chiave privata. Ecco due metodi: [Remote Desktop Manager](#using-remote-desktop-manager) e l'utilità integrata di [Windows certutil](#using-the-windows-certutil-utility).

#### Utilizzo di Remote Desktop Manager

La voce ***Certificato X.509*** può essere utilizzata per importare tale certificato ed esportarlo in diversi formati, incluso PFX.

1. In Remote Desktop Manager, clicchi su ***Nuova voce*** – ***Gestione delle credenziali*** – ***Generale*** – ***Certificato X.509***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0180.png)
2. Selezioni il certificato e clicchi su ***Apri***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0164.png)
3. Clicchi su ***Avanti***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0165.png)
4. Clicchi sui puntini di sospensione e selezioni la ***Chiave privata***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0166.png)
5. Clicchi su ***Apri***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0181.png)

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>La <em><strong>Chiave privata</strong></em> deve avere l'estensione <code>.key</code>.</p></div>
6. Clicchi su ***Fine***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0168.png)
7. Compili le informazioni, quindi clicchi su ***Aggiungi***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0167.png)
8. Selezioni la voce e clicchi su ***Salva certificato con nome*** (disponibile anche nel menu contestuale del tasto destro).

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0186.png)
9. Nel campo ***Formato di esportazione*** scelga ***Personal Information Exchange (pfx)***.
10. Scelga dove salvare il file cliccando sui puntini di sospensione.
11. Inserisca una password complessa, quindi clicchi su ***Esporta***.

    ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0182.png)

#### Utilizzo dell'utilità `certutil` di Windows

Utilizzi l'utilità integrata di Windows `certutil` per combinare un file di certificato (`.crt` o `.cer`) e la relativa chiave privata (`.key`). Entrambi i file devono avere lo stesso nome. `certutil -MergePFX file.crt file.pfx`

![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0169.png)

### Importazione del certificato

Dopo aver acquisito il certificato e il file della chiave privata del certificato, lo importi in Windows.

1. Installi il certificato:
   * Se Windows rileva automaticamente il certificato, faccia doppio clic su di esso e scelga ***Installa certificato...***; oppure
   * Apra `certmgr.msc` nella posizione dell'archivio desiderata (`LocalMachine` o `CurrentUser`), clicchi con il tasto destro sulla posizione desiderata (es.: ***Personale/Certificati***) e scelga ***Tutte le attività*** – ***Importa***.

     ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0183.png)
2. Scelga una delle seguenti opzioni e clicchi su ***Avanti***:
   * ***Seleziona automaticamente l'archivio certificati in base al tipo di certificato***; oppure
   * ***Colloca tutti i certificati nel seguente archivio*** e clicchi su ***Sfoglia...*** per scegliere una cartella.

     ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0184.png)
3. Completi l'importazione cliccando su ***Fine***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0185.png)

## Concessione al servizio Devolutions Gateway dell'autorizzazione di lettura sulla chiave privata del certificato

Per impostazione predefinita, Devolutions Gateway esegue il proprio servizio utilizzando l'account Servizio di rete. Per utilizzare un certificato dall'archivio certificati locale, si assicuri che l'account Servizio di rete disponga delle autorizzazioni di lettura sulla chiave privata del certificato.

1. Apra l'archivio certificati locale e si porti sul certificato.
2. Clicchi con il tasto destro sul certificato e selezioni ***Tutte le attività*** – ***Gestisci chiavi private***.

   ![](https://cdnweb.devolutions.net/docs/INTERFACE2079.png)
3. Clicchi per aggiungere un nome utente.

   ![](https://cdnweb.devolutions.net/docs/INTERFACE2080.png)
4. Scriva "NETWORK SERVICE" nel campo dei nomi degli oggetti, quindi clicchi su ***OK***.

   ![](https://cdnweb.devolutions.net/docs/INTERFACE2081.png)
5. Selezioni il nuovo nome utente ***NETWORK SERVICE*** e consenta l'autorizzazione di ***Lettura*** su di esso.

   ![](https://cdnweb.devolutions.net/docs/INTERFACE2082.png)
6. Clicchi su ***Applica***, quindi clicchi su ***OK***.

## Configurazione dell'archivio certificati di Windows tramite gateway.json

La posizione predefinita del file `gateway.json` è nella directory **%ProgramData%\Devolutions\Gateway**.

Si assicuri che il file sia un `.json` valido testandolo con:

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

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

Questo funziona con PowerShell 5.1 e versioni successive (la versione consigliata da utilizzare è PowerShell 7.x).

![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0173.png)

Di seguito è mostrata una configurazione tipica. I suoi valori possono differire, in particolare il ***Nome soggetto***, poiché rifletterà il nome di dominio a cui risponde Devolutions Gateway. I valori importanti da modificare sono:

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

Un esempio dell'intero file di configurazione:

```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. Esegua lo script sopra riportato.
2. Apra `services.msc`.
3. Clicchi con il tasto destro su ***Devolutions Gateway Service*** e selezioni ***Riavvia***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0174.png)
4. Verifichi che Devolutions Gateway funzioni correttamente navigando su `https://{FQDN}:7171/jet/health` (sostituendo `{FQDN}` con l'indirizzo DNS del suo Gateway) con un browser web.

## Configurazione dell'archivio certificati di Windows tramite PowerShell

Devolutions Gateway può essere configurato anche tramite comandi PowerShell. Il [modulo PowerShell di Devolutions Gateway](https://www.powershellgallery.com/packages/DevolutionsGateway/) espone molti comandi per configurarlo. Per impostazione predefinita, un'installazione di Devolutions Gateway include il modulo nella directory di installazione. Importi il modulo nel modo seguente:

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

![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0175.png)

Un altro metodo per rendere il modulo facilmente accessibile è installarlo nel modo seguente:

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

![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0176.png)

Una volta importato, può visualizzare la configurazione corrente tramite il seguente comando:

```powershell
Get-DGatewayConfig
```

![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0177.png)

Per indicare a Devolutions Gateway di utilizzare l'archivio di Windows, utilizzi il seguente comando:

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

![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0178.png)

Riavvii il servizio affinché la configurazione abbia effetto.

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

![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0179.png)

Verifichi che Devolutions Gateway funzioni correttamente navigando su `https://{FQDN}:7171/jet/health` con un browser web.


---

# 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/it/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.
