A segurança é uma preocupação primordial em qualquer desenvolvimento de aplicativos IoT. Os dados dos dispositivos IoT são passados para o servidor/nuvem onde podem ser armazenados temporariamente ou por um longo período para gerar análises. O meio de transporte através do qual os dados são passados do dispositivo IoT para a nuvem deve ser protegido com a implementação de várias medidas de segurança IoT, para que os dados não possam ser invadidos por qualquer ataque Man-in-the-Middle.
O protocolo MQTT também tem várias provisões de segurança como autenticação, autorização, criptografia de carga útil e segurança da camada de transporte TLS/SSL. O CloudMQTT é um dos MQTT Broker que permite implementar todas essas medidas de segurança. O CloudMQTT é um broker Mosquitto gerenciado e seguro na nuvem que fornece um método leve de execução de mensagens do publicador para o assinante usando o modelo de enfileiramento de mensagens pub/sub. O broker cloudMQTT usa um número aleatório de portas que são geradas pelo próprio broker CloudMQTT. Para nenhuma segurança, o número da porta começa com 1XXXX, para segurança TLS/SSL, o número da porta começa com 2XXXX e para suporte a Websocket, começa com 3XXXX.
Neste tutorial, será demonstrado como dois dispositivos móveis (smartphones) podem se comunicar usando o protocolo MQTT com segurança TLS via corretor CloudMQTT. Para configurar esses smartphones como clientes MQTT, um aplicativo Android – IOT MQTT Dashboard é instalado e usado. Para saber mais sobre como configurar qualquer telefone celular ou PC como cliente MQTT, confira o seguinte tutorial –
Como configurar PC e celular como clientes MQTT
Para aproveitar os serviços do broker CloudMQTT, um desenvolvedor ou usuário precisa criar uma conta em customer.cloudmqtt.com. Então, primeiro crie uma conta em customer.cloudmqtt.com e faça login no painel de controle.
Visita cliente.cloudmqtt.com e insira um ID de e-mail no formulário de inscrição.
Figura 1: Captura de tela da página de registro da conta do cliente no CloudMQTT
Uma mensagem de confirmação será enviada para o ID de e-mail. Abra o e-mail do CloudMQTT e clique em 'confirmar e-mail'.
Fig. 2: Captura de tela do e-mail de confirmação da conta do cliente do CloudMQTT
Agora crie a conta CloudMQTT digitando uma senha de sua escolha na aba aberta.
Fig. 3: Captura de tela da criação da conta do cliente no CloudMQTT
Uma nova janela será aberta solicitando a criação de uma instância. Crie uma nova instância CloudMQTT clicando no link ‘criar’.
Figura 4: Captura de tela da criação da instância no CloudMQTT
Na janela ‘Criar nova instância’, insira o nome da instância e adicione um nome de tag como Mobile2Mobile.
Fig. 5: Captura de tela da criação de nova instância no CloudMQTT
Depois de criar a instância, os detalhes da instância, como informações de conexão, nome de usuário, senha e porta atribuída, podem ser visualizados na página de detalhes.
Figura 6: Captura de tela dos detalhes da instância no CloudMQTT
Esta página de informações da instância contém as seguintes informações que serão usadas posteriormente nos dispositivos do cliente MQTT –
1) Servidor – Este é o nome de domínio do broker MQTT. No caso do CloudMQTT, parece m**.cloudmqtt.com.
2) Nome de usuário e senha – O servidor CloudMQTT gera aleatoriamente nome de usuário e senha para os clientes MQTT se conectarem ao corretor. Os desenvolvedores também podem gerenciar seu próprio nome de usuário e senha para se conectar ao corretor MQTT.
3) Porta – CloudMQTT gera porta aleatória para conectar os dispositivos ao broker MQTT. A porta TLS/SSL é usada neste tutorial para fornecer conexão segura aos dispositivos.
Agora clique na guia usuários e crie um usuário digitando um nome de usuário e uma senha. O usuário é o Cliente MQTT que será identificado na corretora por seu nome de usuário e senha.
Figura 7: Captura de tela da criação do usuário no CloudMQTT
Fig. 8: Captura de tela dos detalhes do usuário no CloudMQTT
Neste tutorial, um usuário é criado com o nome de usuário 'Techshlok' e uma senha. Qualquer senha pode ser definida pelo desenvolvedor. Dessa forma, vários usuários podem ser criados para a instância CloudMQTT, com cada usuário tendo nome de usuário e senha separados para se conectar ao broker MQTT.
Se no aplicativo IOT MQTT Dashboard forem usados nome de usuário e senha gerados aleatoriamente, não será necessário adicionar tópicos ao broker MQTT, mas se usuários definidos identificados por nome de usuário e senha forem usados no aplicativo, os campos de tópico deverão ser criados primeiro e cada usuário deve receber direitos de acesso a eles. Os tópicos podem ser criados na aba ACL. Clique no botão Tópico, selecione o usuário, escreva um nome de padrão e clique no botão adicionar. Neste tutorial, o usuário com o nome – Techshlok é usado. O nome do padrão é o nome do tópico.
Figura 9: Captura de tela da criação de tópicos no CloudMQTT
Há dois tópicos/padrões criados – “Mobile2/M1” e “Mobile1/M2”. O usuário recebeu acessos de leitura e escrita para ambos os tópicos. Então, os clientes MQTT que serão conectados ao usuário Techshlok com a senha definida podem compartilhar suas mensagens nesses 2 tópicos.
Fig. 10: Captura de tela de tópicos criados no CloudMQTT
Agora, tudo está definido no lado do corretor CloudMQTT. É hora de configurar os dispositivos móveis para se conectarem ao corretor MQTT. O aplicativo IOT MQTT Dashboard é usado para essa finalidade. Este aplicativo fornece segurança TLS/SSL para transmitir os dados com segurança.
Use o nome de domínio do servidor fornecido na instância do CloudMQTT quando a conta foi criada e use o número da porta na qual a segurança TLS está habilitada. Use o nome de usuário e a senha inseridos ao criar o usuário.
O nome de usuário e a senha gerados pelo broker são usados neste tutorial. Certifique-se de que TLS/SSL esteja definido como 1 para que a conexão segura com o broker possa ser usada. Salve as configurações. Quando as configurações forem salvas, os dispositivos serão conectados com segurança ao broker MQTT.
Fig. 11: Captura de tela móvel da nova atividade de conexão no painel IOT MQTT
Agora, os dispositivos estão conectados com o broker, os dispositivos estão prontos para publicar e assinar as mensagens. Se o nome de usuário e a senha gerados aleatoriamente forem usados, qualquer tópico pode ser definido na extremidade do cliente. Como os tópicos já foram criados para publicar a mensagem de um celular (vamos chamá-lo de celular-01) e para assinar a mensagem, o mesmo tópico é criado no outro celular (vamos chamá-lo de celular-02). Da mesma forma, o tópico para o publicador do celular-02 e para o assinante do celular-01 pode ser criado nas extremidades do cliente.
Saiba mais sobre como criar tópicos e publicar mensagens no painel IOT MQTT no seguinte tutorial –
Comunicação entre PC e celular usando protocolo MQTT via HiveMQ Broker
No tutorial mencionado acima, o corretor HiveMQ é usado. Use o corretor CloudMQTT, o processo restante para criação de tópicos e publicação de mensagens permanece o mesmo para qualquer corretor.
Fig. 12: Captura de tela móvel da atividade de publicação e assinatura no painel IOT MQTT
Os tópicos de ambos os clientes móveis já foram registrados no broker CloudMQTT. As mensagens sobre os tópicos podem ser publicadas de um cliente que o cliente de assinatura obterá automaticamente por meio do broker no aplicativo móvel.
Fig. 13: Captura de tela móvel dos tópicos de publicação e assinatura listados no painel IOT MQTT Atividade de publicação e assinatura
O broker MQTT está recebendo e passando as mensagens para os clientes com segurança. Dessa forma, autenticação básica, autorização e segurança da camada de transporte podem ser habilitadas no Protocolo MQTT.
No próximo tutorial, aprenda a controlar uma luz LED de um PC remoto usando o ESP8266 Wi-Fi Modem e o HiveMQ MQTT Broker. O tutorial também demonstra o carregamento de código para a placa ESP8266 usando a placa Arduino.