Se achar que está na hora de se abrir a todas as possibilidades que acompanham estas frequências, convido-o/a a entrar em contacto comigo.
O meu espaço fica em Lisboa mas posso combinar sessões em todo o país na impossibilidade de vir até cá.

Como mencionado nos outros tutoriais de MQTT: Introdução ao MQTT e Segurança no MQTT, manter a segurança de uma comunicação é muito importante para proteção dos dados que estão sendo transmitidos, em razão disso, esse tutorial trabalhará com o modo TLS do protocolo MQTT, além da geração de certificados de segurança. O processo de ensino será dividido nos seguintes tópicos:
Para acompanhar esse tutorial é necessário que você tenha visto os outros dois tutoriais anteriores, pois trabalharemos com conhecimentos adquiridos previamente, além de utilizarmos a ferramenta MQTTBox, apresentada em: Introdução ao MQTT
Desde os primórdios da internet, os protocolos TLS e seu antecessor, SSL, possibilitam a transmissão de mensagens criptografadas, garantindo dessa forma a segurança dos usuários. Frequentemente esses protocolos são atualizados com a intenção de aumentar a segurança que visa proteger o sistema de invasores e a integridade dos dados. É comum o uso do TLS em aplicativos de navegação, e-mails, troca de mensagens, entre outras aplicações com o uso de dados pessoais.
Os protocolos são padronizações para troca de informações entre máquinas. O protocolo SSL (Secure Sockets Layer) foi desenvolvido em julho de 1994 pela Netscape e distribuído junto aos navegadores Netscape e Internet Explorer. Nos anos posteriores, foi criado o SSL 1.0, mas o mesmo não foi lançado ao público, posteriormente foi apresentado o SSL 2.0 com diversas falhas. A versão reformulada, lançada em 1996, serviu de pilar para o TLS, esse último mais atualizado e seguro. Apesar da substituição, é comum encontrarmos o TLS sendo chamado de SSL.
Em 1999 foi lançado o TLS (Transport Layer Security), responsável por criptografar o tráfego da web e outros. Diferentemente do SSL, o TLS faz uso do algoritmo Keyed-Hashing for Message Authentication Code (HMAC), enquanto o SSL se utiliza apenas do Message Authentication Code (MAC). O HMAC produz hashes mais seguros. No TLS, não é estritamente necessário recorrer a uma raiz AC (Autoridade Certificadora e Registradora) para uso de uma certificação, sendo possível recorrer a uma autoridade intermediária, outra vantagem é o uso de novas mensagens de alerta.
Os principais objetivos do Protocolo é a segurança através do uso da criptografia, a interoperabilidade entre programadores, a extensibilidade criptográfica, com a opção de adição de novos métodos de criptografia sem a necessidade de inclusão de bibliotecas, além da eficiência relativa, que consiste em um mecanismo de armazenamento para evitar processamentos criptográficos a cada nova conexão, pois a criptografia exige alto processamento.
O SSL e o TLS fornecem um canal de comunicação seguro entre máquina-máquina ou dispositivos que fazem uso de internet ou rede interna. Um exemplo de seu uso é para proteção entre navegador e servidor, transformando um site HTTP em HTTPS, sendo que o S representa “secure”, em português, “seguro”.
HTTP (Hypertext Transfer Protocol) é um protocolo de comunicação utilizado para transferir dados entre usuário e servidor. Analogamente, o HTTPS possui a mesma função, com a diferença de agir sobre a camada (SSL/TLS), essa camada possibilita que os dados sejam transmitidos de forma criptografada e com garantia de autenticação de servidor através dos certificados digitais, que aprenderemos mais adiante como elaborar. Em 2017 o Google tomou a medida de classificar todos os sites HTTP como inseguros.
Para saber se um site é seguro, basta conferir se no início da URL existe um cadeado verde ou cinza, esse cadeado indica que a conexão é HTTPS, outrossim, se clicarmos nesse cadeado será possível ver a certificação desse site.
Um certificado digital é um documento virtual com uma assinatura algoritma única, dados de identificação do site, informações do emissor e período de validade, o certificado garante a autenticidade e a proteção das informações compartilhadas e é de extrema relevância para sites que exigem cadastro de usuário e inserção de dados pessoais, por essa razão, é estritamente recomendado que não sejam inseridas informações pessoais em sites não certificados . O certificado deve ser emitido por uma autoridade certificadora confiável, essa confiabilidade se baseia em uma lista nomeada de “certificadoras raiz”, no tutorial aprenderemos a simular a exigência do certificado para a nossa comunicação, além de criarmos o nosso próprio certificado para fins de teste. Abaixo está o certificado digital da Curto Circuito, o mesmo que aparece ao clicarmos em cadeado>>certificado.
O OpenSSL é um conjunto de recursos essenciais para o desenvolvimento de comunicação baseada nos protocolos SSL/TLS, além de ser uma biblioteca de criptografia para uso geral. O OpenSSL possui licença do tipo Apache, sendo livre para obtenção e utilização para fins comerciais e não-comerciais desde que esteja de conformidade com as licenças disponíveis no site.
Ao término desse processo, abra o Prompt de Comando, para tal, digite “cmd” no campo de pesquisas de sua área de trabalho e seguidamente clique em “abrir”.
Estando aberto o Prompt, realize a transferência de diretório digitando cd.. para voltar um diretório ou cd NomeDoDiretório para avançar para o diretório em questão, a intenção é acessar o OpenSSL para realizar as devidas configurações.
Feito isso, é necessário movimentar o arquivo openssl.cnf para um diretório acima. Vamos acessar a nossa pasta do OpenSSL , entrar em bin, copiar o arquivo “openssl.cnf” e colar fora da pasta bin, dessa forma:
Depois de colar, vamos iniciar o nosso processo para gerar um certificado digital, primeiramente vamos criar uma chave para simular a Autoridade Certificadora, essa autoridade é a responsável por validar o certificado, assim como o cartório valida uma assinatura.
Onde, genrsa é o comando para gerar o algoritmo chave do tipo RSA, também existe o tipo ECDSA, mas como é mais recomendado o uso do RSA por razões de compatibilidade, usaremos este. O –des3 se refere a senha que criaremos, definimos que a mesma será criptografada em Triple-DES. O autoridade.key é o nome do nosso arquivo gerado do tipo .key, enquanto 2048 é o tamanho do mesmo em bits.
Atentando-se ao fato de que a senha deve possuir mais de 4 caracteres e deve ser repetida para confirmação.
Em req -new eu faço um requerimento de um novo certificado para a Autoridade, o -x509 corresponde a um padrão que define o formato dos certificados. Um certificado x509 conta com a identidade de uma organização e é assinado por uma autoridade certificadora. Em -days eu defini a validade do meu certificado para 1 ano. Com o algoritmo -key eu inseri minha chave gerada com o nome de autoridade.key e defini o nome do meu certificado para autoridade.cer
Ao pressionar “Enter”, teremos que fornecer alguns dados para a emissão do certificado, esses dados são:
Note que o “é” do “Note-Técnico” não aparece por se tratar de um caractere especial, de qualquer forma, é importante colocar o nome exato da sua máquina, mesmo que esta tenha caracteres especiais.
Depois de criarmos o par de chaves para o servidor, criaremos a requisição do certificado com o seguinte código:
o servidor.csr é o nosso arquivo .crs de requerimento de certificado, e o servidor.key é o nosso arquivo chave gerado no passo anterior, nesse código estamos requerindo –req uma nova -new saída –out do tipo crs.
Para preenchimento dos dados, usaremos como base o que fizemos ao criar a requisição do certificado da Autoridade, sendo fundamental usar o nome do computador ou o IP, o mesmo utilizado no “Common Name” para gerar o certificado da Autoridade Certificadora.
Inserimos a requisição de certificado por parte do emissor em -req -in servidor.csr, carregamos o arquivo de certificado da autoridade -CA autoridade.crt, em seguida carregamos o arquivo de chave da autoridade -CAkey autoridade.key e criamos o arquivo servidor.crt com validade de um ano -days 365