1
resposta

Dúvida referente a certificação ssl, como fazer requisições https

Olá pessoal, boa tarde, recentemente venho implementando minha primeira solução em um VPS, mas estou tendo alguns problemas para conseguir imeplementar a certificação ssl.

Vale mencionar que eu construi a aplicação toda com typescript, frontend em react e backend com node.

Estou fazendo requisições com o axios para efetuar a comunicação do frontend com o serviço de backend, tudo personalizado e até ai ta tudo lindo. Depois de um sufoco consegui fazer a aplicação rodar no VPS com a ferramenta docker-compose para fazer os containers conversarem entre si, configurei até um servidor web pra fazer o serviço de proxy reverso para quando os usuários acessarem o dns eles são redirecionados para o serviço de frontend que está rodando em uma porta especifica da minha máquina VPS.

Depois de fazer tudo isso, percebi que o site ainda não estava seguro e fui pesquisar a respeito do maldito protocolo https, tentei passar a responsabilidade de gerar o certificado ssl para um servidor web como o nginx, mas deu ruim. Agora estou usando um outro servidor web e tentei gerar o certificado ssl na marra por meio do painel de controle do servidor web. Resultado, o console explodiu em erros informando que os dados mesclavam dados não criptografados e ainda surgiram diversos erros do protocolo websocket dizendo que a conexão falhou.

Eu gosto muito dos cursos da Alura, mas acho que nas formações relacionadas a programação o assunto de certificado ssl e https deveria ser mencionado com um pouco mais de carinho, estou há dias tentando resolver isso, não sei nem dizer se realmente essa é uma parte realcionada a progrmação ou devops porque no estágio de desenvolvimento em que me encontro (preciso desenvolver e entregar o software) as coisas parecem ser mesclar e tudo vai ficando mais complexo que uma simples aplicação rodando em localhost.

Além do desabafo gostaria de uma ajuda para ver se consigo resolver esse problema e finalmente implementar a certificação ssl para meu VPS.

Abraço.

1 resposta

Olá Thales, bom dia!

Para implementar a certificação SSL no seu VPS, uma abordagem comum é usar o Let's Encrypt, que oferece certificados SSL gratuitos. Aqui está um passo a passo que pode ajudar:

  1. Instale o Certbot: O Certbot é uma ferramenta que facilita a obtenção e renovação de certificados SSL do Let's Encrypt. A instalação pode variar dependendo do sistema operacional do seu VPS, mas geralmente você pode instalá-lo usando o gerenciador de pacotes do seu sistema.

  2. Configure o Nginx: Já que você está usando um servidor web para proxy reverso, é importante garantir que o Nginx esteja configurado corretamente. Você pode usar o Certbot para configurar automaticamente o Nginx para usar SSL.

  3. Obtenha o Certificado: Com o Certbot instalado, você pode executar um comando para obter e instalar o certificado SSL. Algo como:

    sudo certbot --nginx -d seu-dominio.com -d www.seu-dominio.com
    

    Isso irá configurar o Nginx para usar o certificado SSL.

  4. Verifique a Configuração: Após a instalação, verifique se o seu Nginx está redirecionando corretamente as requisições HTTP para HTTPS. Você pode fazer isso adicionando uma regra de redirecionamento no arquivo de configuração do Nginx.

  5. Teste a Conexão: Depois de tudo configurado, teste o acesso ao seu site para garantir que ele está usando HTTPS e que não há erros de conteúdo misto. Os erros de conteúdo misto ocorrem quando recursos (como scripts ou imagens) são carregados via HTTP em uma página HTTPS. Certifique-se de que todas as URLs no seu frontend estejam usando HTTPS.

Lembre-se de que, ao usar WebSockets, você deve garantir que eles também estejam configurados para usar HTTPS (ou WSS, que é a versão segura dos WebSockets).

Espero que essas dicas ajudem a resolver o seu problema de SSL no VPS. Implementar SSL pode ser desafiador no início, mas é uma parte importante para garantir a segurança das suas aplicações.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.