Como o título sugere, estou tentando configurar meu servidor para servir tráfego com HTTPS. Já consigo expor o servidor e receber informações dele, simplesmente sem HTTPS.
Existem alguns detalhes interessantes que abordarei, mas esse é o objetivo principal.
- Eu tenho um servidor Go rodando em um Raspberry Pi na minha rede doméstica que estou usando como uma API pessoal.
- Encaminhei as portas 80 e 443 da minha rede doméstica e apontei para o endereço IP estático do meu Raspberry Pi
- Eu possuo um domínio que estou apontando para o IP da minha rede doméstica.
- Meu servidor go está rodando na porta 8088, então eu uso o Nginx para encaminhar solicitações do IP base para a porta do meu servidor.
Até agora tudo está funcionando perfeitamente, exceto que eu gostaria de permitir que meu servidor utilize HTTPS.
Minha dúvida é que tenho muitas partes móveis nessa configuração, então o que seria responsável por garantir o HTTPS:
- O domínio?
- Minha configuração do Nginx?
- O próprio servidor?
- Uma combinação de todos os itens acima.
Eu não tenho certeza.
Apenas procurando alguma orientação para habilitar o HTTPS para este servidor, obrigado!
Seu Nginx pode lidar com uma solicitação http e https.
Defina seu nginx para escutar na porta 80 e redirecione a solicitação 80 para 443.
Adicione seu certificado em seu nginx e faça proxy da solicitação vinda de 443 para o servidor GO.
O HTTPS deve ser tratado pelo servidor nginx, que deve estar escutando na porta 443. Ele também pode escutar na porta 80, mas é melhor servir HTTP ou redirecionar para HTTPS (porta 443), pois esse é um comportamento normal. Você não precisa de nenhuma configuração de DNS. Os aplicativos geralmente reconhecem as portas padrão 80 como HTTP e 443 como HTTPS.
É melhor que um aplicativo como o nginx lide com as dificuldades de lidar adequadamente com HTTP e HTTPS de alto desempenho, para que você não precise pensar nessas coisas para seu aplicativo da web (ou seja, sua API Go). Observe que a conexão entre seu aplicativo Nginx e Go não precisa ser HTTPS, pois ambos estão na máquina de exemplo.
Confira este guia Linode sobre como configurar uma configuração Nginx para HTTPS e proxy reverso para um aplicativo da web.
Além disso, com HTTPS, você precisa ter um par de chaves assinado por uma autoridade adequada (ou seja, uma cadeia de certificados). Como isso é algo que você está usando apenas para seus próprios usos, você pode ser a autoridade adequada e gerar seu próprio certificado autoassinado. Mas também pode ser mais fácil usar o Let's Encrypt , que aproveitará o fato de você possuir o domínio e emitir um certificado válido para usar em seu site (também explicado no guia Linode).