Skip to main content

Guia de configuração de segurança para o broker MQTT do Accelero.

Pré-requisito

Requer Accelero 2.17.3 ou superior.

INFRAESTRUTURA BÁSICA

  1. Atualizar o Accelero para a versão 2.17.3 ou superior.

  2. 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.crt

    A rota GET /mqtt/ca.crt é pública (não exige login) e devolve o conteúdo bruto de /certs/mqtt.crt no servidor. Se a resposta vier vazia ou com erro, o certificado não foi provisionado nesse caminho.

MQTT TLS NA REDE INTERNA DO ACCELERO

  1. Acessar o servidor via SSH.

  2. Executar o script a seguir e seguir as configurações exibidas em tela:

    scripts/mqttTls.sh
Não recomendado

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

  1. Atualizar o gateway para a versão mais atual disponível.

  2. No gateway, executar o script abaixo e seguir as instruções exibidas em tela:

    scripts/configureMqttTls.sh
  3. Reiniciar o gateway para que as configurações entrem em vigor.

Dica

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:

ChaveTipoDescrição
useTlsbooleanoLiga/desliga o TLS na conexão com o broker. Padrão: false.
castringCaminho do certificado da autoridade certificadora no servidor.

As demais chaves continuam como antes: host (resolvido de MQTT_HOST), port1883 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).

Certificado ausente derruba a inicialização

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.

TLS sem verificação de hostname

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.


Próximos Passos