Mosquitto : client et serveur MQTT
Mosquitto est un courtier de messages (ou broker / serveur MQTT) MQTT open source. Plus d'infos sur MQTT à la page MQTT.
Mosquitto peut être utilisé pour implémenter des scénarios tels que la collecte de données de capteurs, la surveillance de l'état des appareils et la gestion de l'IoT en général. Les clients MQTT peuvent se connecter à Mosquitto pour publier et/ou recevoir des messages sur des topics spécifiques, permettant une communication efficace et fiable entre les appareils.
Dans cet article j'installe Mosquitto sur Rasbperry Pi. Le port par défaut 1883/tcp sera utilisé.
Installer le service Mosquitto
Voici les étapes générales pour installer Mosquitto sur Rasbperry Pi OS, Debian ou Ubuntu :
sudo apt update sudo apt install mosquitto
Après l'installation, vous pouvez vérifier si Mosquitto est en cours d'exécution en utilisant la commande mosquitto -v
dans l'invite de commandes. Cela devrait afficher la version de Mosquitto et les informations de journalisation.
Vérifier l’accessibilité du service
Pour vous assurer que le port Mosquitto est ouvert, vous pouvez utiliser un outil en ligne de commande comme nmap pour scanner votre adresse IP publique et vérifier si le port 1883 est ouvert. Par exemple, en utilisant la commande suivante : nmap -p 1883 adresse_ip_broker
. Si le port Mosquitto est ouvert, vous devriez voir une ligne dans la sortie de la commande qui indique que le port 1883 est “open”. Je conseille d’exécuter nmap
sur un autre ordinateur que celui qui exécute le service Mosquitto.
❯ nmap -p 1883 rpimqtt Starting Nmap 7.93 ( https://nmap.org ) at 2023-02-19 08:30 CET Nmap scan report for rpimqtt (192.168.100.208) Host is up (0.00085s latency). rDNS record for 192.168.100.208: rpimqtt.acegrp.lan PORT STATE SERVICE 1883/tcp open mqtt Nmap done: 1 IP address (1 host up) scanned in 0.02 seconds
Configurer la connexion identifiée
La connexion à Mosquitto peut être anonyme ou avec un nom d'utilisateur et un mot de passe, selon la configuration du serveur. Dans se paragraphe nous abordons la configuration d'un utilisateur.
Pour créer un utilisateur et de définir un mot de passe afin d'accéder à Mosquitto, il faut utiliser l'utilitaire mosquitto_passwd
qui est installé avec Mosquitto et permet de gérer les informations d'identification des utilisateurs pour Mosquitto.
sudo mosquitto_passwd -c /etc/mosquitto/passwd UTILISATEUR
Plus spécifiquement, cette commande effectue les actions suivantes :
sudo
permet d'exécuter la commande avec des privilèges d'administrateur pour pouvoir écrire dans le dossier /etc/mosquitto où se trouve le fichier de mots de passe.
mosquitto_passwd
est l'utilitaire de ligne de commande pour gérer le fichier de mots de passe.
-c
crée un nouveau fichier de mots de passe s'il n'existe pas déjà, ou remplace un fichier existant.
/etc/mosquitto/passwd
est le chemin d'accès complet au fichier de mots de passe à créer ou modifier.
UTILISATEUR
est le nom d'utilisateur à ajouter au fichier de mots de passe. Vous pouvez remplacer ce nom d'utilisateur par le nom que vous souhaitez utiliser.
Une fois que vous avez créé le fichier de mots de passe et ajouté des utilisateurs, vous pouvez utiliser ces informations d'identification pour restreindre l'accès à Mosquitto, en configurant l'authentification basée sur le nom d'utilisateur et le mot de passe dans le fichier de configuration de Mosquitto. Cela est particulièrement important si vous utilisez Mosquitto dans un environnement de production ou si vous souhaitez sécuriser l'accès à votre broker MQTT.
Vous devez modifier le fichier de configuration de Mosquitto pour autoriser l'authentification basée sur le nom d'utilisateur et le mot de passe.
Ouvrez le fichier de configuration de Mosquitto. Le fichier peut être situé à différents endroits en fonction de votre installation. Par exemple, sur une installation standard de Mosquitto sous Linux, le fichier se trouve généralement dans /etc/mosquitto/mosquitto.conf
.
Ajoutez les lignes suivantes au fichier de configuration pour spécifier le chemin d'accès au fichier de mots de passe que vous avez créé avec mosquitto_passwd
, ainsi que les paramètres d'authentification :
password_file /etc/mosquitto/passwd allow_anonymous false
Enregistrez le fichier de configuration et redémarrez le service Mosquitto pour que les modifications prennent effet :
sudo systemctl restart mosquitto
Après avoir suivi ces étapes, les utilisateurs devront s'authentifier avec un nom d'utilisateur et un mot de passe valides pour publier et souscrire à des messages dans Mosquitto. Si l'utilisateur n'a pas les bonnes informations d'identification, il sera refusé d'accès. Cette fonctionnalité de sécurité renforce la sécurité de Mosquitto et permet de restreindre l'accès à des utilisateurs de confiance uniquement.
Configurer la connexion anonyme
La connexion à Mosquitto peut être anonyme ou avec un nom d'utilisateur et un mot de passe, selon la configuration du serveur. Dans ce paragraphe nous abordons la configuration pour une connexion anonyme.
Pour indiquer que la connexion au serveur MQTT est anonyme (sans nom d'utilisateur ni mot de passe), vous devez ajouter les lignes suivantes dans votre fichier de configuration /etc/mosquitto/mosquitto.conf
:
allow_anonymous true
Ceci autorisera les connexions anonymes au serveur MQTT. Si cette option n'est pas définie, toutes les connexions nécessiteront un nom d'utilisateur et un mot de passe valides.
Assurez-vous de redémarrer le serveur MQTT après avoir modifié le fichier de configuration pour que les modifications prennent effet.
Notez que l'utilisation de connexions anonymes peut présenter des risques de sécurité, car cela permet à n'importe qui de se connecter et de publier ou de recevoir des messages sans authentification. Il est donc recommandé d'utiliser des informations d'authentification sécurisées pour protéger votre serveur MQTT.
Envoyer / recevoir des messages MQTT
Mosquitto-clients est un outil en ligne de commande fourni avec le broker Mosquitto pour publier et souscrire à des messages MQTT à partir de la ligne de commande.
En d'autres termes, Mosquitto-clients permet aux développeurs et aux administrateurs de système de tester et de déboguer des applications MQTT en utilisant des commandes simples pour publier et recevoir des messages. Cela peut être utile pour vérifier la connectivité, le flux de données et le traitement des messages entre les appareils et le broker Mosquitto.
Pour installer les clients Mosquitto, y compris le client de ligne de commande mosquitto_sub
et le client d'envoi mosquitto_pub
, vous pouvez suivre ces étapes :
sudo apt update sudo apt install mosquitto-clients
Vous pouvez maintenant utiliser les clients Mosquitto pour publier et souscrire à des messages dans Mosquitto.
Par exemple, vous pouvez utiliser la commande mosquitto_pub
pour publier des messages MQTT à un topic sensor/elec
:
mosquitto_pub -h localhost -t sensor/elec -m 2546
Par exemple vous pouvez utiliser la commande mosquitto_sub
pour souscrire au topic sensor/elec
et recevoir des messages MQTT :
mosquitto_sub -h localhost -t "sensor/elec"