Outils pour utilisateurs

Outils du site


tutoriel:oliv:installer-mosquitto-openbsd

Installer MQTT sur OpenBSD

MQTT, Kezako ?

Message Queuing Telemetry Transport, ou MQTT a été crée par Andy Stanford-Clark (IBM) et Arlen Nipper (EuroTech).

Ce protocole a été donné à la communauté OpenSource.

MQTT 3.1.1 est un standard OASIS.

Objectif initial : interconnecter des sites distants avec une faible bande passante, pour l'envoi, la réception et le traitement de données télémétriques.

Aujourd'hui il est largement utilisé dans l'univers de l'IoT (Note de Traduction : Internet of Things: Internet des Objets)

Ce service fonctionne selon une mécanique publication / souscription. L'agent qui fournit le service est appelé un broker

Objectifs

Ce document a pour but de présenter l'installation du service MQTT via le broker Mosquitto.

Le broker fournira les fonctionnalités suivantes :

  • Publier sur le port 1883
  • Authentification utilisateur protégée par mot de passe

Prérequis

Une plateforme sous OpenBSD, ici un RockPro64, avec un accès à l'internet.

Installation

Installation du package:

# pkg_add mosquitto

Activation et configuration du service au démarrage :

# rcctl enable mosquitto

Configuration du service

Décommenter et configurer les 2 lignes suivantes (bind_adress & port)

/etc/mosquitto/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_anonymmous & password_file) :

/etc/mosquitto/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/mosquitto/pwd.txt

Remarque: il est possible de mettre en place une couche SSL, néanmoins cela alourdit le protocole. Ni SSL, ni les certificats SSL ne seront présentés ici.

Ajout d'utilisateur(s)

Créer le fichier /etc/mosquitto/pwd.txt :

# touch /etc/mosquitto/pwd.txt

Ajouter l'utilisateur FOO :

# echo "foo:unPasswordDeOuf" >> /etc/mosquitto/pwd.txt

Encoder le mot de passe :

# mosquitto -U /etc/mosquitto/pwd.txt

Résultat :

# cat /etc/mosquitto/pwd.txt
foo:$6$QfkyvDluHIPNxHZ3$86S/YJq4xHejjfBRmSO9nR5ko2U0N6DRvLWH28Z6Ajrg7uv2haVPzYKMO24VfbiiuCBrTyYQmVZn5xZH7ODP+Q==

Ajouter si nécessaire un second user, tel que toto :

# echo "toto:lePasswordDeTOTO" >> /etc/mosquitto/pwd.txt

Encoder :

# mosquitto -U /etc/mosquitto/pwd.txt

Résultat :

# cat /etc/mosquitto/pwd.txt
foo:$6$QfkyvDluHIPNxHZ3$86S/YJq4xHejjfBRmSO9nR5ko2U0N6DRvLWH28Z6Ajrg7uv2haVPzYKMO24VfbiiuCBrTyYQmVZn5xZH7ODP+Q==
toto:$6$sfEnzZJZjlegrkLL$pzkn5uNykUSzLFkvFoN5aTvMenY8GLMc7ASaHNPlB0n0q2SCesOYopZdWMM1S+NpP8Ql9x6vnmME0kyx/XeYQw==

Démarrer le service

# rcctl start mosquitto

Allo, est-ce que cela fonctionne ?

Ouvrir 2 terminaux, 1 pour la publication, l'autre pour la souscription.

Nous utiliserons les binaires :

  • mosquitto_pub pour publier un message sur un sujet (topic)
  • mosquitto_sub pour souscrire à un sujet et y lire les messages

Terminal #2 (souscription) :

mosquitto_sub -h mon.ip.domain.local -p 1883 -u foo -P unPasswordDeOuf -t installation/mosquitto        
Oye, oye, l'installation de mosquito est finie, quel succes !    
Merci, a bientot pour de nouveaux sujets.

Terminal #1 :

send msg #1

$ mosquitto_pub -h mon.ip.domain.local -p 1883 -u foo -P unPasswordDeOuf -t installation/mosquitto -m "Oye, oye, l'installation de mosquito est finie, quel succes !"

send msg #2

$ mosquitto_pub -h mon.ip.domain.local -p 1883 -u foo -P unPasswordDeOuf -t installation/mosquitto -m "Merci, a bientot pour de nouveaux sujets." 

Documentations

tutoriel/oliv/installer-mosquitto-openbsd.txt · Dernière modification: 2020/04/19 09:47 de pengouinpdt