Como montar un bridge TLS con Mosquitto y MyQttHub


#1

1. Introducción

El siguiente artículo explica cómo conectar un broker Mosquitto a MyQttHub con un bridge de manera que los mensajes enviados a MyQttHub serán enviados a tu Mosquitto y viceversa.

El artículo proporciona una configuración general que tiene que seguir pero posiblemente tenga que ajustarla para que encaje mejor con sus necesidades.

2. Asegúrese de que tiene un Mosquitto actualizado

Asegúrese de que tiene un servidor Mosquitto instalado en sus sistema y que proporciona soporte para “remote_clientid”. También, asegúrese de que tiene un OpenSSL instalado con los últimos certificados públicos localizados en /etc/ssl/certs.

Ciertamente es posible conectar Mosquitto a MyQttHub con un bridge usando protocolo no seguro (mqtt sin TLS) pero esto es altamente no recomendable.

3. Asegúrese de crear unas credenciales específicas para su servidor Mosquitto

  1. Si no tiene unas, use el siguiente artículo para crear un dispositivo que represente la conexión de su servidor Mosquitto:

    Cómo crear y gestionar dispositivos MQTT con MyQttHub.com

  2. No tiene que ser un dispositivo administrador. Tiene que estar activo.

  3. Apunte estas credenciales (clientId, usuario y contraseña), para usarlas en las siguientes secciones.

4. Configurando su servidor Mosquitto para hacer bridge con MyQttHub

Asumiendo que ya tiene un Mosquitto instalado en su sistema, siga los siguientes pasos:

  1. Abra el /etc/mosquitto/mosquitto.conf y añada las siguientes indicaciones generales (antes de cualquier llamada a include_dir):

    # Broker MQTT externo: MyQttHub
    connection node02.myqtthub.com
    
    # Conectar con puerto estándar MQTT TLS
    address node02.myqtthub.com:8883
    
    # Asegure que mosquitto encuentre los certificados publicos
    bridge_capath /etc/ssl/certs
    
    # Conectar todo en ambos lados
    topic # both
    
    # Configure las credenciales para autenticar (las creadas anteriormente)
    remote_clientid  <put-here-client-id>
    remote_username <put-here-user-name>
    remote_password <password>
    

5. Ahora reinicie y compruebe los logs

  1. Después de que todo esté configurado, reinicie su Mosquitto, que, dependiendo de su OS, será algo como:

     # sistemas basados en systemd
     >> systemctl restart mosquitto 
     # sistemas basados en upstart
     >> service mosquitto restart
     # sistemas basados en sysV
     >> /etc/init.d/mosquitto restart
    
  2. Después de eso, deberías ver algo como lo siguiente en los logs (en particular, deberías recibir un CONNACK):

     >> tail -f /var/log/mosquitto/mosquitto.log
     593017815: Bridge local.<your-client-id-will-appear-here> doing local SUBSCRIBE on topic #
     1593017815: Connecting bridge (step 1) node02.myqtthub.com (node02.myqtthub.com:8883)
     1593017816: Connecting bridge (step 2) node02.myqtthub.com (node02.myqtthub.com:8883)
     1593017816: Bridge <your-client-id-will-appear-here> sending CONNECT
     1593017816: Received CONNACK on connection local.<your-client-id-will-appear-here>.
     1593017816: Bridge local.<your-client-id-will-appear-here> sending SUBSCRIBE (Mid: 2, Topic: #, QoS: 0, Options: 0x00)
    
  3. Al mismo tiempo, si va a “Connected Device”:

    image

  4. …y pulsa sobre “Connected Devices”:

    image

  5. …debería ver su dispositivo mosquitto, con una indicación de bridge:


MyQttHub ES -- Empieza por aquí