

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Conecte una aplicación al bróker EMQX en Edge AWS IoT SiteWise
<a name="connect-app-to-broker"></a>

El broker EMQX utiliza Transport Layer Security (TLS) en el puerto 8883 para cifrar todas las comunicaciones, lo que garantiza que sus datos permanezcan protegidos durante la transmisión. En esta sección, se explican los pasos para establecer conexiones entre sus aplicaciones y el bróker EMQX. Seguir estos pasos ayuda a mantener la integridad y confidencialidad de sus datos industriales. El proceso de conexión implica dos enfoques principales: utilizar la detección automática de IP a través de componentes o configurar manualmente los nombres DNS y las direcciones IP como nombres alternativos del sujeto (SANs) en los certificados TLS. Cada método tiene sus propias ventajas en función de la configuración de la red y de los requisitos de seguridad. Esta documentación lo guiará a través de ambas opciones.

**Topics**
+ [Configure TLS para establecer conexiones seguras con el intermediario EMQX en Edge AWS IoT SiteWise](#configure-tls-emqx-broker)
+ [Pruebe la conexión del broker EMQX en Edge AWS IoT SiteWise](#test-emqx-connection)
+ [Utilice su propia CA](#configure-tls-custom-ca)
+ [Abra el puerto 8883 para las conexiones de firewall externas](#emqx-firewall)

## Configure TLS para establecer conexiones seguras con el intermediario EMQX en Edge AWS IoT SiteWise
<a name="configure-tls-emqx-broker"></a>

De forma predeterminada, AWS IoT Greengrass genera un certificado de servidor TLS para el broker EMQX firmado por la autoridad de certificación (CA) del dispositivo principal. Para obtener más información, consulte [Conectar dispositivos cliente a un dispositivo AWS IoT Greengrass Core con un agente MQTT](https://docs.aws.amazon.com/greengrass/v2/developerguide/connecting-to-mqtt.html).

### Recupere el certificado TLS
<a name="configure-tls-retrieve-certificate"></a>

Para obtener el certificado de CA, ejecute el siguiente comando en el host de la puerta de enlace:

------
#### [ Linux ]

Ejecute el siguiente comando en una sesión de shell en el host de la puerta de enlace:

```
/greengrass/v2/bin/swe-emqx-cli cert
```

Este comando muestra la ubicación del certificado e imprime su contenido.

También puede guardar el certificado en un archivo mediante este comando:

```
/greengrass/v2/bin/swe-emqx-cli cert --output /path/to/certificate.pem
```

------
#### [ Windows ]

Ejecute el siguiente comando en una PowerShell sesión en el host de la puerta de enlace:

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 cert
```

Este comando muestra la ubicación del certificado e imprime su contenido.

También puede guardar el certificado en un archivo mediante este comando:

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 cert --output C:\path\to\certificate.pem
```

La CLI localiza automáticamente el certificado independientemente de la ruta exacta del sistema.

------

Copie el contenido del archivo ca.pem a la aplicación externa que va a conectar al agente. Guárdelo como `BrokerCoreDeviceCA.pem`.

### Agregue names/IP direcciones DNS personalizadas al certificado del servidor TLS
<a name="configure-tls-custom-dns-ip"></a>

El nombre alternativo (SAN) del sujeto del certificado generado por AWS IoT Greengrass es. `localhost` Al establecer una conexión TLS desde fuera del host de la puerta de enlace, se produce un error en el paso de verificación de TLS porque el nombre de host del intermediario no coincide con el nombre de host del certificado del `localhost` servidor.

Para solucionar el problema de los nombres de host no coincidentes, AWS IoT Greengrass proporciona dos formas de administrar los puntos finales de los dispositivos principales. En esta sección se describen ambas opciones. Para obtener información más detallada, consulte [Administrar los terminales de los dispositivos principales](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-core-device-endpoints.html) en la *Guía para AWS IoT Greengrass Version 2 desarrolladores*.
+ Para conectarse al agente EMQX mediante la dirección IP del dispositivo principal, utilice la sección Detección automática de IP.
+ Para conectarse al agente EMQX mediante un nombre DNS en lugar de una dirección IP, utilice la sección de administración manual.

------
#### [ Automated IP discovery ]

Esta opción permite que el dispositivo principal descubra automáticamente su dirección IP y la añada como nombre alternativo del sujeto (SAN) al certificado del agente.

1. Añada el `aws.greengrass.clientdevices.IPDetector` componente a la implementación de su dispositivo principal.

1. Implemente los cambios en su dispositivo

1. Espere a que se complete el despliegue.

   Una vez completada la implementación, puede establecer una conexión TLS segura mediante la dirección IP del intermediario.

   La dirección IP se agrega automáticamente como SAN al certificado del corredor.

------
#### [ Manual DNS and IP Configuration ]

Puede agregar manualmente nombres DNS y direcciones IP como nombres alternativos del asunto (SANs) a su certificado TLS. Este método resulta útil cuando ha configurado un nombre DNS para el host de la puerta de enlace.

**importante**  
Si utiliza el IPDetector componente, elimínelo de la implementación antes de continuar. El IPDetector componente anula las configuraciones manuales de los puntos finales.

**Para configurar manualmente los puntos finales**

1. <a name="sitewise-open-console"></a>Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. En el panel de navegación de la izquierda, elija **las puertas de enlace Edge** en la sección **Edge**.

1. Elija la puerta de enlace que desee configurar.

1. En la sección de **configuración de la puerta de enlace Edge**, elija la URL de su **dispositivo principal de Greengrass**. Aparece la página del dispositivo principal.

1. Seleccione la pestaña **Dispositivos cliente**.

1. Seleccione **Administrar puntos de conexión**.

1. En el cuadro de diálogo Administrar puntos de conexión, introduzca los nombres DNS y las direcciones IP que desee SANs añadir. Utilice el puerto 8883.

1. Elija **Actualizar**.

El certificado del servidor TLS del bróker se actualiza automáticamente para incluir sus nuevos puntos de conexión.

**Para verificar la actualización del certificado del servidor TLS mediante Linux**

1. Inicie una sesión de shell en el host de la puerta de enlace.

   ```
   docker exec emqx openssl x509 -in ./data/cert.pem -text -noout | grep -A1 "Subject Alternative Name"
   ```

1. El comando devuelve un resultado similar al siguiente:

   ```
   X509v3 Subject Alternative Name: 
   DNS:{{endpoint_you_added}}, DNS:localhost
   ```

1. Compruebe que su punto final aparezca en la lista de SANs.

**Para comprobar la actualización del certificado del servidor TLS mediante Windows**

1. Inicie una sesión de shell en el host de la puerta de enlace.

   ```
   (Get-PfxCertificate -FilePath "C:\greengrass\v2\work\aws.greengrass.clientdevices.mqtt.EMQX\v2\data\cert.pem").Extensions | Where-Object { $_.Oid.FriendlyName -eq "Subject Alternative Name" } | ForEach-Object { "Subject Alternative Name:", ($_.Format($true) -split "`n")[0..1] }
   ```

1. El comando devuelve un resultado similar al siguiente:

   ```
   Subject Alternative Name:
   DNS Name={{your-endpoint}}
   DNS Name=localhost
   ```

1. Compruebe que el punto final que agregó esté en la lista de SANs.

------

## Pruebe la conexión del broker EMQX en Edge AWS IoT SiteWise
<a name="test-emqx-connection"></a>

Tras configurar su agente EMQX con certificados TLS y credenciales de autenticación, es importante comprobar que la configuración funciona correctamente. Probar la conexión ayuda a garantizar que las configuraciones de seguridad se implementen correctamente y que los clientes puedan establecer correctamente conexiones cifradas con el intermediario. En esta sección se muestra cómo probar la conexión de su intermediario mediante el cliente de interfaz de línea de comandos (CLI) de Mosquitto, una herramienta de cliente MQTT muy utilizada que admite el cifrado y la autenticación TLS.

### Utilice el cliente CLI de Mosquitto para probar la conexión del broker EMQX
<a name="test-emqx-connection-mosquitto"></a>

En este paso, utilizaremos el cliente CLI mosquitto para probar nuestra configuración y asegurarnos de que podemos conectarnos correctamente al corredor con el nombre de usuario y la contraseña que creamos anteriormente. Para obtener los `BrokerCoreDeviceCA.pem` siguientes pasos, consulte el Paso 3: Configuración de TLS.

```
mosquitto_sub -h {{hostname|ip address}} \
    -p 8883 \
    -t "#" \
    -q 1 \
    -u {{username}} -P {{password}} \
    --cafile BrokerCoreDeviceCA.pem
```

**nota**  
Es posible que aparezca un error SSL:Verify si la hostname/IP dirección a la que se está conectando no coincide con el nombre alternativo (SAN) del sujeto que figura en el certificado de CA que está transmitiendo al cliente. Consulte la sección «Añadir names/IP direcciones DNS personalizadas al certificado del servidor TLS» en el Paso 3: Configuración de TLS para obtener un certificado con la SAN correcta.

En este punto, todos los usuarios tienen acceso a publicar y suscribirse a todos los temas del intermediario. Continúe en [Configure las reglas de autorización para AWS IoT SiteWise Edge en EMQX](authorization-rules-emqx-broker.md).

## Utilice su propia CA
<a name="configure-tls-custom-ca"></a>

AWS IoT Greengrass describe cómo configurar su propio componente de autenticación del dispositivo cliente para que utilice su propia autoridad de certificación (CA). El componente de autenticación del dispositivo de cliente (`aws.greengrass.clientdevices.Auth`) autentica los dispositivos de cliente y autoriza las acciones de los dispositivos de cliente. Para obtener más información, consulte [Uso de su propia autoridad de certificación](https://docs.aws.amazon.com/greengrass/v2/developerguide/connecting-to-mqtt.html#use-your-own-CA) en la *Guía para AWS IoT Greengrass Version 2 desarrolladores*.

Para usar su propia CA, añada el `aws.greengrass.clientdevices.Auth` componente a su implementación para poder especificar una configuración personalizada.

## Abra el puerto 8883 para las conexiones de firewall externas
<a name="emqx-firewall"></a>

------
#### [ Linux ]

En la regla de firewall de su host Linux, añada una regla de entrada para el puerto 8883 a fin de permitir las conexiones entrantes desde fuera del host de la puerta de enlace. Si hay algún firewall instalado, asegúrese de que se permitan las conexiones TLS entrantes en el puerto 8883.

------
#### [ Windows ]

En la regla de firewall del Microsoft Windows host, añada una regla de entrada para el puerto 8883 a fin de permitir las conexiones entrantes desde fuera del host de la puerta de enlace. Asegúrese de que la regla sea una regla de permiso, del tipo puerto, que especifique el puerto 8883. Puede configurarlo de acuerdo con la configuración de su red para permitir las conexiones desde sus aplicaciones externas al intermediario.

------