Guia de configuração de segurança para o broker MQTT do Accelero.
Requer Accelero 2.17.3 ou superior.
INFRAESTRUTURA BÁSICA
-
Atualizar o Accelero para a versão 2.17.3 ou superior.
-
Fazer um teste rápido para verificar se é possível obter o certificado digital da instalação. Acesse a URL abaixo e confirme que o certificado é exibido (começando por
-----BEGIN CERTIFICATE-----):https://<facility>.accelerobr.com.br/mqtt/ca.crtA rota
GET /mqtt/ca.crté pública (não exige login) e devolve o conteúdo bruto de/certs/mqtt.crtno servidor. Se a resposta vier vazia ou com erro, o certificado não foi provisionado nesse caminho.
MQTT TLS NA REDE INTERNA DO ACCELERO
-
Acessar o servidor via SSH.
-
Executar o script a seguir e seguir as configurações exibidas em tela:
scripts/mqttTls.sh
Não é recomendado ativar a comunicação TLS na rede interna do Accelero. Não há nenhum ganho prático em fazer isso.
MQTT TLS COM GATEWAYS
-
Atualizar o gateway para a versão mais atual disponível.
-
No gateway, executar o script abaixo e seguir as instruções exibidas em tela:
scripts/configureMqttTls.sh -
Reiniciar o gateway para que as configurações entrem em vigor.
Após reiniciar o gateway, aguarde alguns instantes e verifique nos logs se a conexão TLS foi estabelecida com sucesso.
COMO FUNCIONA POR BAIXO
Do lado do Accelero, o TLS é controlado pela credencial mqtt (credentials/mqtt.php, carregada via CredentialManager), que passou a aceitar duas chaves adicionais:
| Chave | Tipo | Descrição |
|---|---|---|
useTls | booleano | Liga/desliga o TLS na conexão com o broker. Padrão: false. |
ca | string | Caminho do certificado da autoridade certificadora no servidor. |
As demais chaves continuam como antes: host (resolvido de MQTT_HOST), port — 1883 por padrão, username/password (MQTT_USER/MQTT_PASSWORD) e qos. Se o broker expuser o TLS em outra porta, ela precisa ser ajustada aqui também.
Esses valores são repassados ao MQTTClientFactory, que os propaga a cada cliente MosquittoMQTT criado. No cliente, quando useTls está ligado e há certificado, a instância Mosquitto\Client recebe setTlsCertificates() com o caminho do CA e setTlsInsecure(true).
Se useTls estiver ligado e o arquivo apontado por ca não existir, a injeção do MQTT lança Error loading MQTT TLS certificate. Confira o caminho antes de ativar.
O cliente usa setTlsInsecure(true), ou seja: o tráfego é criptografado, mas o nome do host não é validado contra o certificado apresentado. Isso protege contra escuta passiva, não contra um man-in-the-middle capaz de apresentar um certificado assinado pela mesma CA.
Com TLS ativo, o cliente também insere pausas de 5 ms após conectar e antes/depois de cada publish, para dar tempo ao handshake da libmosquitto. Em cenários de publicação intensiva, espere uma latência um pouco maior do que no modo sem TLS — mais um motivo para não ligar TLS na rede interna.
TLS NAS CONTROLADORAS
A Neon tem TLS próprio, configurado por firmware e independente destes scripts: a chave brokerusetls em /config_mqtt.json (0 = conexão normal, 1 = usar TLS), junto de brokermqtt, brokerport e credenciais. Alterações nesse arquivo exigem reboot da controladora. Veja Neon - integração MQTT.