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

# Usar el almacén de certificados de Windows para Devolutions Gateway

{% hint style="warning" %}
Si sus clientes no logran conectarse con Devolutions Gateway, asegúrese de que el certificado contenga toda la cadena. Esta cadena de certificados incluye los certificados intermedios. Por ejemplo: Autoridad de certificación raíz – Autoridad de certificación segura – Certificado XYZ adquirido.
{% endhint %}

Es posible utilizar el almacén de certificados de Windows como origen del certificado TLS. En lugar de usar un fichero, almacene y gestione sus certificados con Windows. En el momento de redactar esto, esta funcionalidad no está expuesta en la interfaz gráfica de la consola de configuración de Devolutions Gateway. Para configurarla, debe modificar directamente el fichero gateway.json o utilizar el módulo Devolutions.PowerShell.

Con la nueva funcionalidad, hay disponibles [algunos parámetros adicionales](https://github.com/Devolutions/devolutions-gateway#configuration) para configurar el origen del certificado.

{% hint style="info" %}
Si tiene una configuración `TlsCertificateFile` y/o `TlsPrivateKeyFile` definida previamente, no es necesario eliminarla, ya que `TlsCertificateSource` indica a Devolutions Gateway dónde buscar el certificado.
{% endhint %}

* **TlsCertificateSource** (cadena): origen del certificado TLS, los valores posibles se muestran a continuación.
  * **External** (predeterminado): recupera un certificado almacenado en el sistema de ficheros. Consulte las opciones `TlsCertificateFile`, `TlsPrivateKeyFile` y `TlsPrivateKeyPassword`.
  * **System**: recupera el certificado gestionado por el almacén de certificados del sistema. Consulte las opciones `TlsCertificateSubjectName`, `TlsCertificateStoreName` y `TlsCertificateStoreLocation`.
* **TlsCertificateSubjectName** (cadena): nombre del sujeto del certificado para TLS cuando se usa el origen System.
* **TlsCertificateStoreName** (cadena): nombre del almacén de certificados del sistema que se utilizará para TLS (el valor predeterminado es My).
* **TlsCertificateStoreLocation** (cadena): ubicación del almacén de certificados del sistema que se utilizará para TLS, los valores posibles se muestran a continuación.
  * **CurrentUser** (predeterminado)
  * **CurrentService**
  * **LocalMachine**

## Importar el certificado en el almacén de certificados de Windows

Primero, importe su certificado en el almacén de certificados de Windows. Windows admite los siguientes formatos de certificado:

* Certificado X.509 - \*.cer, \*.crt
* Intercambio de información personal - \*.pfx, \*.p12
* Almacén de certificados serializados de Microsoft - \*.sst
* Certificados PKCS #7 - \*.spc, \*.p7b

{% hint style="info" %}
Si utiliza el método `External` mediante `TlsCertificateSource`, Devolutions Gateway solo admite agrupar la clave pública y la privada en un fichero PFX (PKCS#12). De lo contrario, también deberá definir el parámetro `TlsPrivateKeyFile`.
{% endhint %}

### Convertir un certificado X.509

Devolutions Gateway requiere una clave privada con el certificado TLS; por lo tanto, es posible que deba combinar la clave pública con su clave privada. Aquí tiene dos métodos: [Remote Desktop Manager](#using-remote-desktop-manager) y la [utilidad integrada de Windows certutil](#using-the-windows-certutil-utility).

#### Uso de Remote Desktop Manager

La entrada ***Certificado X.509*** se puede utilizar para importar dicho certificado y exportarlo en varios formatos diferentes, incluido PFX.

1. En Remote Desktop Manager, haga clic en ***Nueva entrada*** – ***Gestión de credenciales*** – ***General*** – ***Certificado X.509***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0180.png)
2. Seleccione el certificado y haga clic en ***Abrir***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0164.png)
3. Haga clic en ***Siguiente***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0165.png)
4. Haga clic en los puntos suspensivos y seleccione la ***Clave privada***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0166.png)
5. Haga clic en ***Abrir***.

   ![](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>Clave privada</strong></em> debe tener la extensión <code>.key</code>.</p></div>
6. Haga clic en ***Finalizar***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0168.png)
7. Rellene la información y luego haga clic en ***Añadir***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0167.png)
8. Seleccione la entrada y haga clic en ***Guardar certificado como*** (también disponible en el menú contextual del botón derecho).

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0186.png)
9. En el campo ***Formato de exportación***, elija ***Intercambio de información personal (pfx)***.
10. Elija dónde se guardará el fichero haciendo clic en los puntos suspensivos.
11. Introduzca una contraseña segura y luego haga clic en ***Exportar***.

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

#### Uso de la utilidad `certutil` de Windows

Utilice la utilidad integrada de Windows `certutil` para combinar un fichero de certificado (`.crt` o `.cer`) y su clave privada (`.key`). Ambos ficheros deben tener el mismo nombre. `certutil -MergePFX file.crt file.pfx`

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

### Importar el certificado

Tras obtener el certificado y el fichero de la clave privada del certificado, impórtelo en Windows.

1. Instale el certificado:
   * Si Windows detecta automáticamente el certificado, haga doble clic en él y elija ***Instalar certificado...***; o
   * Abra `certmgr.msc` en la ubicación de almacén prevista (`LocalMachine` o `CurrentUser`), haga clic derecho en la ubicación deseada (ej.: ***Personal/Certificados***) y elija ***Todas las tareas*** – ***Importar***.

     ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0183.png)
2. Elija una de las siguientes opciones y haga clic en ***Siguiente***:
   * ***Seleccionar automáticamente el almacén de certificados según el tipo de certificado***; o
   * ***Colocar todos los certificados en el siguiente almacén*** y haga clic en ***Examinar...*** para elegir una carpeta.

     ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0184.png)
3. Complete la importación haciendo clic en ***Finalizar***.

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

## Conceder al servicio Devolutions Gateway permiso de lectura sobre la clave privada del certificado

De forma predeterminada, Devolutions Gateway ejecuta su servicio con la cuenta Network Service. Para utilizar un certificado del almacén de certificados local, asegúrese de que la cuenta Network Service tenga permisos de lectura sobre la clave privada del certificado.

1. Abra el almacén de certificados local y vaya al certificado.
2. Haga clic derecho en el certificado y seleccione ***Todas las tareas*** – ***Administrar claves privadas***.

   ![](https://cdnweb.devolutions.net/docs/INTERFACE2079.png)
3. Haga clic para añadir un nombre de usuario.

   ![](https://cdnweb.devolutions.net/docs/INTERFACE2080.png)
4. Escriba "NETWORK SERVICE" en el campo de nombres de objeto y luego haga clic en ***Aceptar***.

   ![](https://cdnweb.devolutions.net/docs/INTERFACE2081.png)
5. Seleccione el nuevo nombre de usuario ***NETWORK SERVICE*** y permítale el permiso de ***Lectura***.

   ![](https://cdnweb.devolutions.net/docs/INTERFACE2082.png)
6. Haga clic en ***Aplicar*** y luego en ***Aceptar***.

## Configurar el almacén de certificados de Windows mediante gateway.json

La ubicación predeterminada del fichero `gateway.json` es el directorio **%ProgramData%\Devolutions\Gateway**.

Asegúrese de que el fichero sea un `.json` válido probándolo 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
}
```

Esto funciona con PowerShell 5.1 y versiones posteriores (la versión recomendada es PowerShell 7.x).

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

A continuación se muestra una configuración típica. Sus valores pueden diferir, especialmente el ***Nombre del sujeto***, ya que reflejará el nombre de dominio al que responde Devolutions Gateway. Los valores importantes que se deben cambiar son:

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

Un ejemplo del fichero de configuración completo:

```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. Ejecute el script anterior.
2. Abra `services.msc`.
3. Haga clic derecho en ***Devolutions Gateway Service*** y seleccione ***Reiniciar***.

   ![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB0174.png)
4. Compruebe si Devolutions Gateway funciona correctamente navegando a `https://{FQDN}:7171/jet/health` (sustituyendo `{FQDN}` por la dirección DNS de su Gateway) con un navegador web.

## Configurar el almacén de certificados de Windows mediante PowerShell

Devolutions Gateway también se puede configurar mediante comandos de PowerShell. El [módulo de PowerShell de Devolutions Gateway](https://www.powershellgallery.com/packages/DevolutionsGateway/) expone muchos comandos para configurarlo. De forma predeterminada, una instalación de Devolutions Gateway incluye el módulo en el directorio de instalación. Importe el módulo de la siguiente manera:

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

Otro método para que el módulo sea fácilmente accesible es instalarlo de la siguiente manera:

```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 vez importado, puede ver la configuración actual mediante el siguiente comando:

```powershell
Get-DGatewayConfig
```

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

Para indicar a Devolutions Gateway que utilice el almacén de Windows, utilice el siguiente 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)

Reinicie el servicio para que la configuración surta efecto.

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

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

Compruebe si Devolutions Gateway funciona correctamente navegando a `https://{FQDN}:7171/jet/health` con un navegador 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/es/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.
