Conectividade

Broker MQTT com Mosquitto e TLS: instalação e configuração no Linux e Windows

1 de junho de 2026·12 min leitura

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

SintomaCausa provávelSolução
Cliente não conecta: Connection refusedPorta 8883 fechada ou Mosquitto não iniciadoVerifique se o serviço está ativo e a porta aberta no firewall
SSL handshake failedCN do certificado não corresponde ao hostnameRegenere server.crt com o CN correto
Connection lostIndex AMI perdeu a conexãoVerifique o Keepalive no Index AMI (≥ 60 s)
Nenhuma mensagem recebidaTópico mal escritoVerifique que publisher e subscriber usam exatamente o mesmo tópico
Authentication failedCredenciais incorretasVerifique 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.