Mosquitto: Configurare Mosquitto per connettersi a un altro server (bridge)

Questa documentazione fa parte della guida Ponti. Consulta la guida completa qui: Come connettere insieme i server Mosquitto (bridge).

👋 Benvenuti nella documentazione di Stackhero!

Stackhero offre una soluzione Mosquitto MQTT cloud pronta all'uso che fornisce numerosi vantaggi, tra cui:

  • Scambi e trasferimenti illimitati di messaggi.
  • Autenticazione illimitata dei dispositivi tramite un'API esterna.
  • ACL avanzate su argomenti, utenti e azioni.
  • Nome di dominio personalizzabile sicuro con HTTPS (ad esempio, https://mqtt.your-company.com).
  • Aggiornamenti semplificati con un solo clic.
  • Prestazioni ottimali e sicurezza robusta grazie a una VM privata e dedicata.

Risparmiate tempo e semplificate la vostra vita: bastano 5 minuti per provare la soluzione Mosquitto MQTT cloud hosting di Stackhero!

In questo esempio, un server remoto si connetterà a un'istanza Stackhero utilizzando un utente dedicato con crittografia TLS per la massima sicurezza.

Per prima cosa, create un nuovo utente sull'istanza MQTT Stackhero. Chiamiamolo bridge-1, con la password secretPassword.

Successivamente, sul server Mosquitto remoto, è possibile modificare il file di configurazione mosquitto.conf (di solito situato in /etc/mosquitto/mosquitto.conf) aggiungendo le seguenti righe alla fine:

# TODO: sostituire "<XXXXXX>.stackhero-network.com" e "<PORT_TLS>" con le informazioni della vostra istanza Stackhero
connection <XXXXXX>.stackhero-network.com
address <XXXXXX>.stackhero-network.com:<PORT_TLS>

# TODO: sostituire "bridge-1" e "secretPassword" con le credenziali del nuovo utente creato
remote_clientid bridge-1
remote_username bridge-1
remote_password secretPassword

start_type automatic
try_private true

# Topic da condividere, direzione e QOS.
# Nota che "both" sembra non funzionare per una ragione sconosciuta.
topic # out 2
topic # in 2

# Abilitare la connessione TLS per crittografare i dati tra il server Mosquitto remoto e l'istanza Stackhero.
bridge_insecure false
bridge_capath /etc/ssl/certs

Prima di riavviare Mosquitto con la sua nuova configurazione, assicurarsi che i certificati TLS esistano sul server remoto.

Verificare che la directory /etc/ssl/certs esista e contenga file con il comando:

ls /etc/ssl/certs

Se esiste e contiene file, è possibile semplicemente riavviare il server Mosquitto.

Se non esiste, si potrebbe considerare di eseguire uno di questi comandi:

  • Su Ubuntu/Debian, è possibile eseguire:

    sudo apt-get install ca-certificates
    
  • Su Alpine Linux, si potrebbe eseguire:

    apk add ca-certificates
    

In alternativa, è possibile scaricare manualmente il certificato. Per fare ciò, scaricare il certificato CA in /etc/mosquitto/isrgrootx1.pem utilizzando il seguente comando:

wget https://letsencrypt.org/certs/isrgrootx1.pem -O /etc/mosquitto/isrgrootx1.pem

Quindi, modificare il file mosquitto.conf per sostituire bridge_capath /etc/ssl/certs con bridge_cafile /etc/mosquitto/isrgrootx1.pem.

Infine, riavviare il server Mosquitto.

Per ulteriori informazioni sulla configurazione del bridge, è possibile consultare la documentazione ufficiale di Mosquitto.