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

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

👋 Bienvenue sur la documentation de Stackhero !

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

  • Échanges et transferts illimités de messages.
  • Authentification illimitée des appareils via une API externe.
  • ACLs avancées sur les topics, utilisateurs et actions.
  • Nom de domaine personnalisable sécurisé avec HTTPS (par exemple, https://mqtt.votre-entreprise.com).
  • Mises à jour simplifiées en un clic.
  • Performance optimale et sécurité robuste 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 se connectera à une instance Stackhero en utilisant un utilisateur dédié avec un chiffrement TLS pour une sécurité maximale.

Tout d'abord, créez un nouvel utilisateur sur l'instance MQTT Stackhero. Appelons-le bridge-1, avec le mot de passe secretPassword.

Ensuite, sur le serveur Mosquitto distant, vous pouvez éditer 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 de l'utilisateur nouvellement créé
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

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

Avant de redémarrer Mosquitto avec sa nouvelle configuration, assurez-vous que les certificats TLS existent sur votre serveur distant.

Vérifiez que le répertoire /etc/ssl/certs existe et contient des fichiers avec la commande :

ls /etc/ssl/certs

S'il existe et contient des fichiers, vous pouvez simplement redémarrer votre serveur Mosquitto.

S'il n'existe pas, vous pouvez envisager d'exécuter l'une de ces commandes :

  • Sur Ubuntu/Debian, vous pouvez exécuter :

    sudo apt-get install ca-certificates
    
  • Sur Alpine Linux, vous pouvez exécuter :

    apk add ca-certificates
    

Alternativement, vous pouvez télécharger manuellement le certificat. Pour ce faire, téléchargez le certificat CA dans /etc/mosquitto/isrgrootx1.pem en utilisant la commande suivante :

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

Ensuite, éditez 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, vous pouvez consulter la documentation officielle de Mosquitto.