{"uuid":"6016aa4b-f42b-43ef-9957-b893fa030a0c","slug":"mosquitto","title":"Mosquitto : client et serveur MQTT","author":"cedric@abonnel.fr","published":true,"published_at":"2023-03-14 07:45:19","created_at":"2023-03-14 07:45:19","updated_at":"2023-03-14 07:45:19","revisions":[],"cover":"","files_meta":[],"external_links":[],"seo_title":"","seo_description":"","og_image":"","category":"Informatique","content":"# Mosquitto : client et serveur MQTT\n\n![Client et serveur MQTT](dummy.png)\n\n**Mosquitto** est un courtier de messages (ou broker / serveur MQTT) **MQTT** open source. Plus d'infos sur MQTT à la page .\n\n**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.\n\nDans cet article j'installe **Mosquitto** sur **Rasbperry Pi**. Le port par défaut **1883/tcp** sera utilisé.\n\n## Installer le service Mosquitto\nVoici les étapes générales pour installer Mosquitto sur Rasbperry Pi OS, Debian ou Ubuntu :\n\n```\nsudo apt update\nsudo apt install mosquitto\n```\n\nAprè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.\n\n## Vérifier l’accessibilité du service\nPour 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.\n\n```BASH\n❯ nmap -p 1883 rpimqtt\nStarting Nmap 7.93 ( https://nmap.org ) at 2023-02-19 08:30 CET\nNmap scan report for rpimqtt (192.168.100.208)\nHost is up (0.00085s latency).\nrDNS record for 192.168.100.208: rpimqtt.acegrp.lan\n\nPORT STATE SERVICE\n1883/tcp open mqtt\n\nNmap done: 1 IP address (1 host up) scanned in 0.02 seconds\n```\n\n## Configurer la connexion identifiée\nLa 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.\n\nPour 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**.\n\n sudo mosquitto_passwd -c /etc/mosquitto/passwd UTILISATEUR\n\nPlus spécifiquement, cette commande effectue les actions suivantes :\n\n- `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.\n\n- `mosquitto_passwd` est l'utilitaire de ligne de commande pour gérer le fichier de mots de passe.\n\n- `-c` crée un nouveau fichier de mots de passe s'il n'existe pas déjà, ou remplace un fichier existant.\n\n- `/etc/mosquitto/passwd` est le chemin d'accès complet au fichier de mots de passe à créer ou modifier.\n\n- `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.\n\nUne 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**.\n\nVous devez modifier le fichier de configuration de **Mosquitto** pour autoriser l'authentification basée sur le nom d'utilisateur et le mot de passe.\n\nOuvrez 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`.\n\nAjoutez 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 :\n\n password_file /etc/mosquitto/passwd\n allow_anonymous false\n\nEnregistrez le fichier de configuration et redémarrez le service **Mosquitto** pour que les modifications prennent effet :\n \n sudo systemctl restart mosquitto\n\nAprè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.\n \n## Configurer la connexion anonyme\nLa 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.\n\nPour 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` :\n\n allow_anonymous true\n\nCeci 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.\n\nAssurez-vous de redémarrer le serveur MQTT après avoir modifié le fichier de configuration pour que les modifications prennent effet.\n\nNotez 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.\n## Envoyer / recevoir des messages MQTT\n**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.\n\nEn 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.\n\nPour 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 :\n\n sudo apt update\n sudo apt install mosquitto-clients\n\nVous pouvez maintenant utiliser les clients Mosquitto pour publier et souscrire à des messages dans Mosquitto. \n\nPar exemple, vous pouvez utiliser la commande `mosquitto_pub` pour publier des messages MQTT à un topic `sensor/elec` :\n\n mosquitto_pub -h localhost -t sensor/elec -m 2546\n\nPar exemple vous pouvez utiliser la commande `mosquitto_sub` pour souscrire au topic `sensor/elec` et recevoir des messages MQTT :\n\n mosquitto_sub -h localhost -t \"sensor/elec\"","featured":false,"tags":[]}