Connectivité

Broker MQTT avec Mosquitto et TLS : installation et configuration sous Linux et Windows

1 juin 2026·12 min lecture

Qu'est-ce que MQTT ?

MQTT (Message Queuing Telemetry Transport) est un protocole de messagerie léger basé sur le modèle publication-abonnement, conçu pour les réseaux à bande passante limitée et les connexions intermittentes — les conditions typiques d'une passerelle 4G sur le terrain. Un appareil publie des messages sur un topic (ex. device/001/energy) ; d'autres appareils abonnés à ce topic les reçoivent automatiquement. Le broker agit comme intermédiaire : il reçoit, filtre et distribue les messages sans que l'éditeur et l'abonné aient besoin de se connecter directement. MQTT fonctionne sur TCP/IP (port 1883 sans chiffrement, 8883 avec TLS) et est normalisé ISO/IEC 20922.

Mosquitto est le broker MQTT de référence open-source maintenu par la Eclipse Foundation. Il supporte MQTT 3.1, 3.1.1 et 5.0, pèse moins de 1 Mo et s'installe en moins de 5 minutes. Ce guide couvre l'installation sous Windows et Linux, la génération de certificats TLS avec OpenSSL et la configuration de l'authentification par nom d'utilisateur et mot de passe.

Quand utiliser Mosquitto

  • Installations self-hosted avec contrôle total du serveur (VPS, serveur local, Raspberry Pi).
  • Environnements de développement et de test avant migration vers un broker cloud.
  • Déploiements avec des exigences strictes en matière de confidentialité.
  • Projets à petit budget — Mosquitto est entièrement gratuit et sans limite de connexions.

Architecture des certificats TLS

Pour MQTT sur TLS (port 8883) vous avez besoin de trois fichiers : un certificat CA auto-signé, un certificat serveur signé par ce CA, et — optionnellement — des certificats client pour l'authentification mutuelle (mTLS).

Prérequis

  • Serveur avec une IP publique ou un nom de domaine accessible depuis l'Index AMI.
  • Port TCP 8883 ouvert dans le pare-feu du serveur.
  • OpenSSL installé (inclus avec Mosquitto sous Windows ; disponible en paquet sous Linux).

Étape 1 — Installer Mosquitto

Linux (Ubuntu / Debian)

Sur Ubuntu 22.04 / Debian 12 :

sudo apt update && sudo apt install -y mosquitto mosquitto-clients
sudo systemctl enable --now mosquitto

Vérifiez que le service est actif :

systemctl status mosquitto
# ● mosquitto.service - Mosquitto MQTT Broker
#    Active: active (running)

Windows 10 / 11

Téléchargez l'installateur officiel depuis mosquitto.org/download (choisissez la version Win64 .exe). Exécutez en tant qu'Administrateur.

winget install EclipseFoundation.Mosquitto

Vérifiez que le service est installé :

sc query mosquitto
# STATE : 4  RUNNING

L'installateur enregistre Mosquitto comme service Windows (nom : mosquitto). Gérez-le depuis services.msc ou PowerShell.

Étape 2 — Générer les certificats TLS avec OpenSSL

Les certificats sont identiques sous Linux et Windows — le processus OpenSSL est le même.

Générez les certificats une seule fois et réutilisez-les pour toutes les Index AMI se connectant au même broker.

Linux (Ubuntu / Debian)

Depuis le terminal (Linux) :

mkdir ~/mosquitto-certs && cd ~/mosquitto-certs
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MonCA-MQTT/O=MonOrg/C=FR"
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr -subj "/CN=broker.mondomaine.com/O=MonOrg/C=FR"
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt

Windows 10 / 11

Depuis PowerShell en tant qu'Administrateur :

cd "C:\Program Files\mosquitto"
mkdir certs && cd certs
.\openssl.exe genrsa -out ca.key 4096
.\openssl.exe req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MonCA-MQTT/O=MonOrg/C=FR"
.\openssl.exe genrsa -out server.key 2048
.\openssl.exe req -new -key server.key -out server.csr -subj "/CN=broker.mondomaine.com/O=MonOrg/C=FR"
.\openssl.exe x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt

Le CN du certificat serveur doit correspondre au hostname ou à l'IP que les clients utiliseront pour se connecter.

Étape 3 — Configurer mosquitto.conf

Linux (Ubuntu / Debian)

Éditez ou créez le fichier de configuration principal : /etc/mosquitto/conf.d/tls.conf

listener 8883
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
require_certificate false

Windows 10 / 11

Sur Windows, le fichier de configuration se trouve à : C:\Program Files\mosquitto\mosquitto.conf

Ouvrez le port 8883 dans le pare-feu :

sudo ufw allow 8883/tcp && sudo ufw reload
New-NetFirewallRule -DisplayName "Mosquitto MQTT TLS" -Direction Inbound -Protocol TCP -LocalPort 8883 -Action Allow

Étape 4 — Vérifier le broker avec mosquitto_sub et mosquitto_pub

Depuis un autre terminal, abonnez-vous à un topic de test :

Linux (Ubuntu / Debian)

mosquitto_sub -h broker.mondomaine.com -p 8883 --cafile ~/mosquitto-certs/ca.crt -t "test/message" -v
mosquitto_pub -h broker.mondomaine.com -p 8883 --cafile ~/mosquitto-certs/ca.crt -t "test/message" -m "Bonjour broker TLS"

Windows 10 / 11

Sur Windows, mosquitto_sub.exe et mosquitto_pub.exe se trouvent dans C:\Program Files\mosquitto\ :

.\mosquitto_sub.exe -h broker.mondomaine.com -p 8883 --cafile "C:\Program Files\mosquitto\certs\ca.crt" -t "test/message" -v
.\mosquitto_pub.exe -h broker.mondomaine.com -p 8883 --cafile "C:\Program Files\mosquitto\certs\ca.crt" -t "test/message" -m "Bonjour broker TLS"

Le terminal 1 doit afficher : test/message Bonjour broker TLS — cela confirme que le broker TLS est opérationnel.

Étape 5 — Authentification par nom d'utilisateur et mot de passe (recommandé)

Créez un fichier de mots de passe pour éviter les connexions anonymes.

Linux (Ubuntu / Debian)

sudo mosquitto_passwd -c /etc/mosquitto/passwd gateway_user
sudo systemctl restart mosquitto

Windows 10 / 11

cd "C:\Program Files\mosquitto"
.\mosquitto_passwd.exe -c "C:\Program Files\mosquitto\passwd" gateway_user
Restart-Service -Name "mosquitto"

Ajoutez ces lignes à mosquitto.conf pour activer l'authentification :

allow_anonymous false
password_file /etc/mosquitto/passwd

Connecter l'Index AMI au broker

Une fois le broker actif avec TLS, configurez les paramètres suivants sur l'Index AMI (guide de configuration MQTT) :

  • Hôte MQTT : IP publique ou FQDN du serveur exécutant Mosquitto.
  • Port : 8883 (MQTT sur TLS).
  • Transport : MQTT sur SSL.
  • Certificat CA : le fichier ca.crt généré à l'Étape 2.
  • Certificat client et clé privée : client.crt et client.key si mTLS.
  • Nom d'utilisateur et mot de passe : les identifiants créés à l'Étape 5.
  • Client ID : identifiant unique par Index AMI.

Résolution des problèmes

SymptômeCause probableSolution
Le client ne se connecte pas : Connection refusedPort 8883 fermé ou Mosquitto non démarréVérifiez que le service est actif et le port ouvert dans le pare-feu
SSL handshake failedLe CN du certificat ne correspond pas au hostnameRégénérez server.crt avec le CN correct
Connexion perdueL'Index AMI a perdu la connexionVérifiez le Keepalive sur l'Index AMI (≥ 60 s)
Aucun message reçuTopic mal orthographiéVérifiez que éditeur et abonné utilisent exactement le même topic
Authentication failedIdentifiants incorrectsVérifiez le nom d'utilisateur/mot de passe et allow_anonymous false dans mosquitto.conf

Prochaines étapes

Avec le broker actif, configurez l'Index AMI via le guide MQTT. Pour interpréter les métriques de signal LTE dans l'aperçu de l'Index AMI, consultez l'article sur le signal LTE.