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:

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."

Documentations