Mosquitto: Configurer Mosquitto pour se connecter à un autre serveur (bridge)

Cette documentation fait partie du guide Bridges. Consultez le guide complet ici : Comment connecter des serveurs Mosquitto entre eux (bridge).

👋 Bienvenue sur la documentation de Stackhero !

Stackhero propose une solution Mosquitto MQTT cloud prête à l'emploi qui offre de nombreux avantages, notamment :

  • Echanges et transferts de messages illimités.
  • Authentification de périphériques illimités via une API externe.
  • ACLs avancées sur les topics, les utilisateurs et les actions.
  • Nom de domaine personnalisable sécurisé en HTTPS (par exemple, https://mqtt.votre-entreprise.com).
  • Mises à jour simplifiées en un clic.
  • Performance optimale et sécurité renforcée grâce à une VM privée et dédiée.

Gagnez du temps et simplifiez-vous la vie : il suffit de 5 minutes pour essayer la solution Mosquitto MQTT cloud hosting de Stackhero !

Dans cet exemple, un serveur distant va se connecter à une instance Stackhero en utilisant un utilisateur dédié avec chiffrement TLS pour une sécurité maximale.

Commencez par créer un nouvel utilisateur sur l'instance MQTT Stackhero. Appelons-le bridge-1, avec le mot de passe secretPassword.

Ensuite, sur le serveur Mosquitto distant, éditez le fichier de configuration mosquitto.conf (généralement situé dans /etc/mosquitto/mosquitto.conf) en ajoutant les lignes suivantes à la fin :

# TODO: remplacez "<XXXXXX>.stackhero-network.com" et "<PORT_TLS>" par les informations de votre instance Stackhero
connection <XXXXXX>.stackhero-network.com
address <XXXXXX>.stackhero-network.com:<PORT_TLS>

# TODO: remplacez "bridge-1" et "secretPassword" par les identifiants du nouvel utilisateur
remote_clientid bridge-1
remote_username bridge-1
remote_password secretPassword

start_type automatic
try_private true

# Topics à partager, direction et QOS.
# Notez que "both" semble ne pas fonctionner pour une raison inconnue.
topic # out 2
topic # in 2

# Activez la connexion TLS pour chiffrer les échanges entre votre serveur Mosquitto distant et votre instance Stackhero.
bridge_insecure false
bridge_capath /etc/ssl/certs

Avant de redémarrer Mosquitto avec cette nouvelle configuration, vérifiez que les certificats TLS existent sur votre serveur distant.

Assurez-vous que le dossier /etc/ssl/certs existe et contient des fichiers avec la commande :

ls /etc/ssl/certs

Si le dossier existe et contient des fichiers, vous pouvez simplement redémarrer votre serveur Mosquitto.

Si ce n'est pas le cas, vous pouvez envisager d'exécuter l'une de ces commandes :

  • Sur Ubuntu/Debian, exécutez :

    sudo apt-get install ca-certificates
    
  • Sur Alpine Linux, exécutez :

    apk add ca-certificates
    

Vous pouvez aussi télécharger le certificat manuellement. Pour cela, téléchargez le certificat CA dans /etc/mosquitto/isrgrootx1.pem avec la commande suivante :

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

Ensuite, modifiez le fichier mosquitto.conf pour remplacer bridge_capath /etc/ssl/certs par bridge_cafile /etc/mosquitto/isrgrootx1.pem.

Enfin, redémarrez votre serveur Mosquitto.

Pour plus d'informations sur la configuration des bridges, consultez la documentation officielle de Mosquitto.