OpenBSD - Installer le broker Mqtt: Mosquitto
Mqtt, Kezako ?
Messaging Queuing Telemetry Transport, ou Mqtt a été crée par Andy Stanford-Clark (IBM) et Arlen Nipper (EuroTech).
L’objectif initial était d’interconnecter des sites distants via une faible bande passante, pour l’envoie, la réception et le traitement de données télémétriques.
Aujourd’hui, il est largement utilisé dans le monde de l’IoT (Ndtr: Internet of Things; internet des objets). C’est dans ce contexte que nous l’utiliserons.
Ce service fonctionne via une mécanique publication / souscription, un agent fournit le service : le broker
Objectifs
Couvrir le processus d’installation du broker Mosquitto et fournir les services suivants:
- Publier le service sur le port TCP 1883
- Service accessible par user & password
Prérequis
Une plateforme fonctionnant sous OpenBSD, ici notre RockPro64
Installation
Installer le package:
doas pkg_add mosquitto
Gérer le service au démarrage:
doas rcctl enable mosquitto
Configuration
Décommenter et configurer les deux lignes suivantes:
code: /etc/mosquitto.conf
# =================================================================
# Default listener
# =================================================================
# IP address/hostname to bind the default listener to. If not
# given, the default listener will not be bound to a specific
# address and so will be accessible to all network interfaces.
# bind_address ip-address/host name
# bind_address 127.0.0.1
bind_address mon.ip.domain.local
# Port to use for the default listener.
port 1883
Révocation de l’accès anonyme ; décommenter les deux lignes suivantes (allow_anonymous & password_file):
code: /etc/mosquitto.conf
# =================================================================
# Security
# =================================================================
(...)
# Defaults to true if no other security options are set. If any other
# authentication options are set, then allow_anonymous defaults to false.
#
allow_anonymous false
(...)
# See the TLS client require_certificate and use_identity_as_username options
# for alternative authentication options. If an auth_plugin is used as well as
# password_file, the auth_plugin check will be made first.
password_file /etc/mosquittp/pwd.txt
Information: Mosquitto, prend en charge l’authentification par certificat ssl. Ces fonctionnalitées ne seront pas implémentées dans notre cas.
Gestion des utilisateurs “applicatifs”
doas touch /etc/mosquitto/pwd.txt
doas echo "foo:unPasswordDeOuf" >> /etc/pwd.txt
doas mosquitto_passwd -U /etc/mosquitto/pwd.txt
cat /etc/mosquitto/pwd.txt
foo:$6$QfkyvDluHIPNxHZ3$86S/YJq4xHejjfBRmSO9nR5ko2U0N6DRvLWH28Z6Ajrg7uv2haVPzYKMO24VfbiiuCBrTyYQmVZn5xZH7ODP+Q==
Si nécessaire, ajouter un second user:
doas echo "toto:lePasswordDeTOTO" >> /etc/mosquitto/pwd.txt
doas mosquitto_passwd -U /etc/mosquitto/pwd.txt
doas cat /etc/mosquitto/pwd.txt
foo:$6$QfkyvDluHIPNxHZ3$86S/YJq4xHejjfBRmSO9nR5ko2U0N6DRvLWH28Z6Ajrg7uv2haVPzYKMO24VfbiiuCBrTyYQmVZn5xZH7ODP+Q==
toto:$6$sfEnzZJZjlegrkLL$pzkn5uNykUSzLFkvFoN5aTvMenY8GLMc7ASaHNPlB0n0q2SCesOYopZdWMM1S+NpP8Ql9x6vnmME0kyx/XeYQw==
Démarrage du service
doas rcctl start mosquitto
Allo, vous m’entendez ?
Ouvrir 2 terminaux. Un pour la publication, l’autre pour la souscription. Commencons par la souscription.
terminal #2 - souscrivons à: install/mosquitto
mosquitto_sub -h mon.ip.domain.local -p 1883 -u foo -P unPasswordDeOuf -t install/mosquitto
messages reçus:
Oye, oye, l'installation de mosquitto est finie, quel succès !
Merci, à bientot pour de nouveaux sujets.
terminal #1 - publions sur: install/mosquitto
mosquitto_pub -h mon.ip.domain.local -p 1883 -u foo -P unPasswordDeOuf -t install/mosquitto -m "Oye, oye, l'installation de mosquito est finie, quel succes !"
mosquitto_pub -h mon.ip.domain.local -p 1883 -u foo -P unPasswordDeOuf -t install/mosquitto -m "Merci, a bientot pour de nouveaux sujets."