O que é MQTT?
MQTT (Message Queuing Telemetry Transport) é um protocolo de mensagens leve baseado no modelo publicação-assinatura, projetado para redes com largura de banda limitada e conexões intermitentes — condições típicas de um gateway 4G em campo. Um dispositivo publica mensagens em um tópico (ex. device/001/energy); outros dispositivos inscritos nesse tópico as recebem automaticamente. O broker atua como intermediário: recebe, filtra e distribui as mensagens sem que publicador e assinante precisem se conectar diretamente. MQTT opera sobre TCP/IP (porta 1883 sem criptografia, 8883 com TLS) e é padrão ISO/IEC 20922.
O Mosquitto é o broker MQTT de referência de código aberto, mantido pela Eclipse Foundation. Suporta MQTT 3.1, 3.1.1 e 5.0, pesa menos de 1 MB e instala em menos de 5 minutos. Este guia cobre a instalação no Windows e Linux, a geração de certificados TLS com OpenSSL e a configuração de autenticação por usuário e senha.
Quando usar o Mosquitto
- Instalações self-hosted com controle total do servidor (VPS, servidor local, Raspberry Pi).
- Ambientes de desenvolvimento e testes antes de migrar para um broker cloud.
- Implantações com requisitos rígidos de privacidade onde os dados não podem sair da rede.
- Projetos de baixo orçamento — o Mosquitto é completamente gratuito e sem limite de conexões.
Arquitetura de certificados TLS
Para MQTT sobre TLS (porta 8883) você precisa de três arquivos: um certificado de CA que você mesmo assina, um certificado de servidor assinado por essa CA e — opcionalmente — certificados de cliente para autenticação mútua (mTLS).
Requisitos
- Servidor com IP público ou nome de domínio acessível a partir do Index AMI.
- Porta 8883 TCP aberta no firewall do servidor.
- OpenSSL instalado (incluído no Mosquitto no Windows; disponível como pacote no Linux).
Passo 1 — Instalar o Mosquitto
Linux (Ubuntu / Debian)
No Ubuntu 22.04 / Debian 12:
sudo apt update && sudo apt install -y mosquitto mosquitto-clients sudo systemctl enable --now mosquitto
Verifique se o serviço está ativo:
systemctl status mosquitto # ● mosquitto.service - Mosquitto MQTT Broker # Active: active (running)
Windows 10 / 11
Baixe o instalador oficial em mosquitto.org/download (escolha a versão Win64 .exe). Execute como Administrador.
winget install EclipseFoundation.Mosquitto
Verifique se o serviço está instalado:
sc query mosquitto # STATE : 4 RUNNING
O instalador registra o Mosquitto como serviço Windows (nome: mosquitto). Gerencie pelo services.msc ou PowerShell.
Passo 2 — Gerar certificados TLS com OpenSSL
Os certificados são os mesmos no Linux e Windows — o processo OpenSSL é idêntico.
Gere os certificados uma vez e reutilize-os para todos os gateways que se conectam ao mesmo broker.
Linux (Ubuntu / Debian)
No 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=MeuCA-MQTT/O=MinhaOrg/C=BR" openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.csr -subj "/CN=broker.meudominio.com/O=MinhaOrg/C=BR" openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
Windows 10 / 11
No PowerShell como Administrador (OpenSSL em C:\Program Files\mosquitto\):
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=MeuCA-MQTT/O=MinhaOrg/C=BR" .\openssl.exe genrsa -out server.key 2048 .\openssl.exe req -new -key server.key -out server.csr -subj "/CN=broker.meudominio.com/O=MinhaOrg/C=BR" .\openssl.exe x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
O CN do certificado do servidor deve corresponder ao hostname ou IP que os clientes usarão para se conectar.
Passo 3 — Configurar mosquitto.conf
Linux (Ubuntu / Debian)
Edite ou crie o arquivo de configuração 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
No Windows, o arquivo de configuração está em: C:\Program Files\mosquitto\mosquitto.conf
Abra a porta 8883 no firewall:
sudo ufw allow 8883/tcp && sudo ufw reload
New-NetFirewallRule -DisplayName "Mosquitto MQTT TLS" -Direction Inbound -Protocol TCP -LocalPort 8883 -Action Allow
Passo 4 — Verificar o broker com mosquitto_sub e mosquitto_pub
De outro terminal, assine um tópico de teste:
Linux (Ubuntu / Debian)
mosquitto_sub -h broker.meudominio.com -p 8883 --cafile ~/mosquitto-certs/ca.crt -t "test/mensagem" -v
mosquitto_pub -h broker.meudominio.com -p 8883 --cafile ~/mosquitto-certs/ca.crt -t "test/mensagem" -m "Olá broker TLS"
Windows 10 / 11
No Windows, mosquitto_sub.exe e mosquitto_pub.exe estão em C:\Program Files\mosquitto\:
.\mosquitto_sub.exe -h broker.meudominio.com -p 8883 --cafile "C:\Program Files\mosquitto\certs\ca.crt" -t "test/mensagem" -v
.\mosquitto_pub.exe -h broker.meudominio.com -p 8883 --cafile "C:\Program Files\mosquitto\certs\ca.crt" -t "test/mensagem" -m "Olá broker TLS"
O terminal 1 deve mostrar: test/mensagem Olá broker TLS — confirma que o broker TLS está operacional.
Passo 5 — Autenticação por usuário e senha (recomendado)
Crie um arquivo de senhas para evitar conexões anônimas.
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"
Adicione estas linhas ao mosquitto.conf para ativar a autenticação:
allow_anonymous false password_file /etc/mosquitto/passwd
Conectar o Index AMI ao broker
Com o broker ativo com TLS, configure os seguintes parâmetros no Index AMI (guia de configuração MQTT):
- Host MQTT: IP público ou FQDN do servidor onde roda o Mosquitto.
- Porta: 8883 (MQTT sobre TLS).
- Transporte: MQTT sobre SSL.
- Certificado CA: o arquivo ca.crt gerado no Passo 2.
- Certificado cliente e chave privada: client.crt e client.key se usar mTLS.
- Usuário e senha: as credenciais criadas no Passo 5.
- Client ID: identificador único por Index AMI.
Resolução de problemas
| Sintoma | Causa provável | Solução |
|---|---|---|
| Cliente não conecta: Connection refused | Porta 8883 fechada ou Mosquitto não iniciado | Verifique se o serviço está ativo e a porta aberta no firewall |
| SSL handshake failed | CN do certificado não corresponde ao hostname | Regenere server.crt com o CN correto |
| Connection lost | Index AMI perdeu a conexão | Verifique o Keepalive no Index AMI (≥ 60 s) |
| Nenhuma mensagem recebida | Tópico mal escrito | Verifique que publisher e subscriber usam exatamente o mesmo tópico |
| Authentication failed | Credenciais incorretas | Verifique usuário/senha e allow_anonymous false no mosquitto.conf |
Próximas etapas
Com o broker ativo, configure o Index AMI no guia de MQTT. Para interpretar as métricas de sinal LTE do Overview do Index AMI, consulte o artigo sobre sinal LTE.