Skip to content
mobius1qwe edited this page Oct 27, 2026 · 1 revision

Home > MQTT > Segurança no MQTT

Segurança no MQTT

Important

Em desenvolvimento (2.0). Ainda não está numa versão lançada e pode mudar.

Nível: intermediário

Em uma frase: TLS para ninguém ler o caminho, um certificado que o cliente confere, e uma identificação do cliente que o broker aceita - cada nuvem pede uma.

Você vai precisar: a OpenSSL 1.1 ou 3 ao lado do executável (dependências).

O cliente confere o broker

A regra é a do cliente HTTP: o evento OnValidateServerCert decide; sem ele, um pin de SSL.Pins que valha para aquele endereço; sem pin, a OpenSSL (cadeia e nome). Para um broker com certificado autoassinado, ponha em SSL.Pins a impressão digital SHA-256 dele. SSL.CAFile aceita uma autoridade sua. Certificado do cliente (TLS mútuo): SSL.CertFile e SSL.KeyFile.

O cliente se identifica

broker componente
usuário e senha (Mosquitto, o do RAL) UserName/Password ou TRALMQTTBasicAuth
SCRAM (MQTT 5.0) TRALMQTTSCRAMAuth (Mechanism: SHA-1, SHA-256, SHA-512)
token de um servidor de login (JWT, OAuth2) TRALMQTTNetTokenAuth com um TRALClientJWTAuth ou TRALClientOAuth2 em Source
JWT assinado pelo próprio aparelho (nuvens de IoT) TRALMQTTSelfTokenAuth
assinatura de acesso compartilhado (Azure IoT Hub, Event Grid) TRALMQTTSASAuth
outro método de autenticação do 5.0 TRALMQTTCustomAuth (Method e eventos)

Ligue o componente em Authentication do cliente. Os que usam token renovam antes de vencer.

O broker

  • TLS: SSL.Enabled, SSL.CertFile, SSL.KeyFile (ou CertPEM/KeyPEM); exigir certificado do cliente: SSL.RequireClientCert com SSL.CAFile. Um certificado autoassinado sai do certificado automático.
  • Quem entra: Users, AuthMethods (SCRAM) ou os autenticadores do RAL ligados ao broker, como a qualquer servidor; com PasswordIsToken a senha vai a eles como token (TRALServerJWTAuth).
  • Os plugins de segurança do servidor (lista branca e negra, força bruta, inundação) julgam cada CONNECT (segurança).
  • Permissions limita o que cada um lê e escreve (broker).

Erros comuns

sintoma causa o que fazer
"certificate" ao conectar autoassinado, ou o nome não bate pin em SSL.Pins, ou SSL.CAFile
"Every SSL.Pins line must end in the SHA-256" pin em outro formato 64 dígitos hexadecimais, com ou sem :
SCRAM recusado no 3.1.1 autenticação estendida é do 5.0 ProtocolVersion := mv50

Veja também

Clone this wiki locally