O TLS no MQTT do Tasmota criptografa tudo o que o seu dispositivo envia e recebe, inclusive a senha do broker, para que você possa conectar tomadas e relés com segurança a um broker na internet. Este guia explica quais builds do Tasmota realmente incluem TLS, como funcionam as duas opções relacionadas ao TLS e como conectar um ESP32 rodando Tasmota a um broker na porta 8883 com validação de certificado adequada.
Por que o MQTT sem criptografia não basta
Na porta 1883, o MQTT trafega como texto puro. O pacote CONNECT leva o usuário e a senha às claras, e cada mensagem cmnd/.../POWER pode ser lida ou reenviada por qualquer um no caminho. Dentro de uma rede doméstica bem administrada, esse risco é pequeno. Quando o broker está na nuvem, o caminho passa pelo seu provedor e pela internet pública, e texto puro deixa de ser aceitável.
O TLS resolve três problemas de uma vez: criptografa a sessão, prova ao dispositivo que ele está falando com o broker verdadeiro e protege as credenciais. O guia de boas práticas de segurança MQTT cobre o panorama geral; este artigo se concentra em fazer o próprio Tasmota usar TLS.
Quais builds do Tasmota suportam MQTT com TLS?
É aqui que a maioria das pessoas trava. O TLS exige memória e espaço de código, por isso não é compilado em todos os binários.
| Plataforma | Build | MQTT com TLS |
|---|---|---|
| ESP32 | tasmota32 e suas variantes |
Incluído |
| ESP32 | tasmota32-zbbridge |
Incluído |
| ESP8266 | tasmota, tasmota-lite, tasmota-sensors e outras builds padrão |
Não incluído |
| ESP8266 | Compilação própria com USE_MQTT_TLS |
Possível, mas com pouca memória |
Se o seu dispositivo é uma tomada com ESP8266, você tem duas opções: compilar sua própria build com #define USE_MQTT_TLS no user_config_override.h ou aceitar MQTT sem criptografia em um broker local confiável e manter a parte da nuvem em outro lugar. No ESP8266, o handshake TLS consome boa parte da RAM disponível, então recursos como um grande conjunto de regras ou muitos sensores podem não caber junto com ele. Para projetos novos, escolha hardware ESP32.
Para ver o que você está rodando, abra a interface web e olhe o rodapé ou a página Information, que mostra a versão e o nome da build, por exemplo 14.2.0(release-tasmota32).
A versão importa para o Let's Encrypt
O Tasmota valida o certificado do broker contra uma pequena lista de certificados raiz embutidos, e não contra um pacote completo de CAs. A raiz do Let's Encrypt, ISRG Root X1, foi adicionada no Tasmota 13.4.1.2. Brokers como broker.connectmq.com usam certificados Let's Encrypt, então garanta que o dispositivo rode uma versão recente; se for mais antiga, atualize primeiro.
As duas opções de TLS explicadas
O Tasmota controla o TLS com dois comandos SetOption:
SetOption103-1ativa o TLS na conexão MQTT,0o desativa. Só tem efeito em builds compiladas com TLS.SetOption132- escolhe como o certificado do servidor é validado.0(o padrão) o verifica contra as autoridades certificadoras embutidas.1muda para validação por fingerprint.
Deixe o SetOption132 em 0 para qualquer broker com certificado publicamente confiável. A validação por fingerprint fixa um certificado específico, e os certificados Let's Encrypt são renovados a cada poucos meses, então um fingerprint fixado vai quebrar na próxima renovação, a menos que você o atualize sempre.
Passo 1: Teste o TLS no MQTT do Tasmota com o servidor MQTT público
O servidor MQTT público em broker.connectmq.com, destinado a testes, aceita conexões TLS anônimas na porta 8883 com qualquer client ID único. Escolha um prefixo aleatório, como q8v3mz, e digite isto no console do Tasmota:
Backlog SetOption103 1; SetOption132 0; MqttHost broker.connectmq.com; MqttPort 8883; MqttClient tasmota-q8v3mz; MqttUser 0; MqttPassword 0; Topic relay1; FullTopic connectmq/demo/q8v3mz/%prefix%/%topic%/
O dispositivo reinicia. Acompanhe o console: uma conexão bem-sucedida registra uma mensagem de que o TLS está conectado, seguida de MQT: Connected. O primeiro handshake pode levar um ou dois segundos em um ESP32; isso é normal.
Verifique a partir de um computador:
mosquitto_sub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
-i watch-q8v3mz -t 'connectmq/demo/q8v3mz/#' -v
Você deve ver tele/relay1/LWT Online e as mensagens INFO e STATE. Envie um comando via TLS:
mosquitto_pub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
-i send-q8v3mz -t 'connectmq/demo/q8v3mz/cmnd/relay1/POWER' -m 'TOGGLE'
Lembre-se de que a área pública pode ser lida por qualquer pessoa mesmo via TLS. O TLS protege o transporte, não o acesso ao tópico. Não deixe em tópicos públicos um dispositivo que controle algo importante.
Passo 2: Conecte-se ao seu broker privado com credenciais
Para produção, crie um broker privado. Na ConnectMQ você escolhe um plano, cria um broker e recebe usuário, senha e client ID. O client ID é vinculado a essas credenciais, então digite-o exatamente:
Backlog SetOption103 1; MqttHost broker.connectmq.com; MqttPort 8883; MqttClient YOUR_CLIENT_ID; MqttUser YOUR_USERNAME; MqttPassword YOUR_PASSWORD; Topic relay1; FullTopic home/%prefix%/%topic%/
Use o host exibido para o seu broker no portal, se for diferente. Após o reinício, abra o explorador de tópicos ao vivo do portal; home/tele/relay1/LWT com o valor retido Online confirma que o dispositivo está conectado via TLS com sua própria identidade.
Você pode confirmar as configurações ativas a qualquer momento com Status 6, que imprime host, porta, client e usuário do MQTT (a senha nunca é exibida).
Passo 3: Reforce a segurança do dispositivo
O TLS no link MQTT é apenas uma camada. Algumas configurações extras fecham as brechas óbvias:
- Defina uma senha de administração web com
WebPassword <senha forte>; caso contrário, qualquer pessoa no seu Wi-Fi pode abrir a interface e ler as configurações de MQTT. - Desative totalmente o servidor web com
WebServer 0nos dispositivos que você controla apenas via MQTT. Reative-o depois via MQTT, se precisar. - Use um conjunto de credenciais por dispositivo. Se uma tomada for perdida ou comprometida, você revoga um conjunto sem mexer nos outros.
- Mantenha o firmware atualizado. Listas de raízes TLS e correções de segurança chegam com as novas versões. O Tasmota pode ser atualizado via MQTT com
Upgrade 1. - Não desative a validação. Fingerprints só com
FFou outros atalhos do tipo "aceitar qualquer coisa" eliminam a metade de autenticação do TLS.
Solução de problemas do TLS no MQTT do Tasmota
| Sintoma | Causa provável | O que fazer |
|---|---|---|
SetOption103 não tem efeito |
Build sem TLS | Grave uma build tasmota32 ou compile com USE_MQTT_TLS |
| Handshake TLS falha, erro de certificado | Firmware anterior ao 13.4.1.2 não tem a ISRG Root X1 | Atualize o Tasmota |
| TLS falha logo após o boot e funciona depois | Relógio ainda não ajustado | Garanta que o NTP funcione; a verificação de certificados exige a hora correta |
| Conecta na 1883, mas não na 8883 | Porta bloqueada no Wi-Fi de convidados ou por um firewall | Teste a partir de outra rede |
| O dispositivo reinicia durante o handshake (ESP8266) | Falta de memória | Remova drivers, use ESP32 |
rc 5 não autorizado |
Credenciais ou client ID divergentes | Copie de novo os valores do portal |
Se você está criando um firmware próprio em vez de usar o Tasmota, os mesmos princípios de TLS valem no código Arduino; veja o tutorial de ESP32 com MQTT para um exemplo com WiFiClientSecure. O fluxo geral de configuração do Tasmota, incluindo topics e full topics, está no guia de configuração MQTT do Tasmota. A referência oficial de cada opção está na documentação de TLS do Tasmota.
Um broker na nuvem que fala TLS por padrão
Um broker auto-hospedado com TLS significa comprar ou renovar certificados, configurar listeners e aplicar patches no servidor. Um broker MQTT gerenciado como a ConnectMQ oferece TLS na 8883 e WebSocket seguro na 8084 com um certificado Let's Encrypt já configurado, além de bloqueio de IP após repetidas falhas de login. Isso permite que alguns relés ESP32 em casa ou em vários locais compartilhem um único broker seguro. Para uma visão mais ampla de onde esses dispositivos se encaixam, veja o guia de automação IoT.
Proteja seus dispositivos Tasmota com a ConnectMQ
Crie um broker Serverless gratuito em app.connectmq.com, sem cartão de crédito. Cole as credenciais geradas no comando de console acima, ative o SetOption103 e seus dispositivos Tasmota estarão conectados via TLS em minutos.
Perguntas frequentes
O Tasmota suporta MQTT sobre TLS?
Sim, nas builds tasmota32 para ESP32, de fábrica. As builds padrão para ESP8266 não incluem TLS; você precisa de uma build personalizada com USE_MQTT_TLS.
O que o SetOption103 faz no Tasmota?
SetOption103 1 ativa o TLS na conexão MQTT em builds que incluem suporte a TLS. Combine-o com MqttPort 8883.
Devo usar validação por fingerprint ou por CA?
Use a validação por CA (SetOption132 0) para brokers com certificados publicamente confiáveis, como os do Let's Encrypt. Os fingerprints quebram sempre que o certificado é renovado.
Por que minha conexão TLS do Tasmota falha com um firmware antigo?
Versões antigas não incluem o certificado ISRG Root X1 usado pelo Let's Encrypt, então a validação falha. Atualizar para o Tasmota 13.4.1.2 ou posterior resolve.



