Conecte una aplicación al bróker EMQX en Edge AWS IoT SiteWise - AWS IoT SiteWise

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

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.

Configure TLS para establecer conexiones seguras con el intermediario EMQX en Edge AWS IoT SiteWise

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.

Recupere el certificado TLS

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 nombres DNS o direcciones IP personalizados al certificado del servidor TLS

El nombre alternativo (SAN) del sujeto del certificado generado por es. AWS IoT Greengrass 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 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.

  2. Implemente los cambios en su dispositivo

  3. 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 añadir manualmente los nombres DNS y las 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. Vaya a la consola de AWS IoT SiteWise.

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

  3. Elija la puerta de enlace que desee configurar.

  4. 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.

  5. Seleccione la pestaña Dispositivos cliente.

  6. Seleccione Administrar puntos de conexión.

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

  8. 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"
  2. El comando devuelve un resultado similar al siguiente:

    X509v3 Subject Alternative Name: DNS:endpoint_you_added, DNS:localhost
  3. 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] }
  2. El comando devuelve un resultado similar al siguiente:

    Subject Alternative Name: DNS Name=your-endpoint DNS Name=localhost
  3. 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

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

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.

Utilice su propia CA

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

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.