HTTP

Redirecionando HTTP para HTTPS

Redirecionando HTTP para HTTPS
Esteja você usando certificados autoassinados ou certificados de uma CA bem conhecida, você precisa de uma maneira de integrá-los aos seus serviços. Um dos casos de uso mais típicos de um servidor HTTP, pode ser um servidor da web ou um servidor REST API, mas precisa ser configurado para ser seguro.

A maioria dos servidores web como nginx e apache escuta na porta 80 por padrão e precisa de um pouco de configuração antes de começar a usar os certificados para criptografar o tráfego. Apesar de ter configurado, o servidor da web ainda pode atender o tráfego HTTP sem problemas. Assim, os visitantes do seu site digitarão apenas http: // exemplo.com em vez de https: // exemplo.com e todo o tráfego permanecerá sem criptografia para eles. Para contornar esse problema, precisamos configurar os servidores HTTP de forma que eles mesmos redirecionem todo o HTTP para HTTPS.

A configuração que tenho está usando um FQDN com um IP público, então vou emitir um certificado SSL de LetsEncrypt em vez de emitir um autoassinado. Dependendo do tipo de servidor da web que você está usando, você pode fazer isso de várias maneiras. Mas o fluxo geral é assim:

  1. Obtenha um certificado assinado de uma CA. No nosso caso, será LetsEncrypt
  2. Configure o servidor da web para usar a chave de criptografia para criptografar o tráfego HTTP de saída na porta 443. Esta é a porta HTTPS padrão.
  3. Redirecione todas as solicitações de entrada na porta 80 (que é HTTP não criptografado) para a porta 443, permitindo assim sessões criptografadas para todas as conexões de entrada.

Vamos demonstrar várias maneiras de alcançar o que queremos. A primeira é a solução mais fácil que usa Certbot.

1. Maneira mais fácil - usando plug-ins Certbot para Nginx ou Apache

Vou usar o Nginx como exemplo para este servidor. Se você estiver executando um diferente, como Apache ou HAProxy, basta visitar a página oficial do Certbot e selecionar seu sistema operacional e servidor web de escolha. Para Nginx no Ubuntu 18.04, estes são os comandos de que você precisaria.

Primeiro, atualize seu índice de repositório.

$ sudo apt-get update
$ sudo apt-get install software-properties-common

Você precisaria adicionar os repositórios de terceiros necessários, que o Ubuntu pode não ter habilitado por padrão.

$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt-get update

Em seguida, instale o pacote certbot com plug-ins Nginx, usando o comando abaixo.

$ sudo apt-get install certbot python-certbot-nginx

A instrução será diferente para diferentes plataformas e instale plugins para o servidor web, se disponível. A razão pela qual os plug-ins tornam nossas vidas muito mais fáceis é porque eles podem editar automaticamente os arquivos de configuração no servidor web para redirecionar o tráfego também. A desvantagem pode ser que, se você estiver executando um servidor muito personalizado para um site pré-existente, o plug-in pode quebrar algumas coisas nele.

Para novos sites, ou configurações muito simples, como um proxy reverso, o plug-in funciona surpreendentemente bem. Para obter os certificados e redirecionar o tráfego, basta executar o comando abaixo e seguir as várias opções interativas conforme o pacote orienta você por elas.

$ sudo certbot --nginx

Resultado:

certbot --nginx
Salvando log de depuração em / var / log / letsencrypt / letsencrypt.registro
Plug-ins selecionados: Autenticador nginx, Instalador nginx
Digite o endereço de e-mail (usado para renovação urgente e avisos de segurança) (digite 'c' t
cancelar): YOUREMAILHERE @ EXEMPLO.COM
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Leia os Termos de Serviço em
https: // letsencrypt.org / documents / LE-SA-v1.2-novembro-15-2017.pdf. Você deve
concordar para se registrar no servidor ACME em
https: // acme-v02.api.deixa criptografar.org / diretório
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) gree / (C) ancel: A
 

Nenhum nome foi encontrado em seus arquivos de configuração. Por favor entre em seu domínio
nome (s) (separados por vírgula e / ou espaço) (digite 'c' para cancelar): SUBDOMAIN.NOME DO DOMÍNIO.TLD

 
Escolha se deseja ou não redirecionar o tráfego HTTP para HTTPS, removendo o acesso HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Sem redirecionamento - não faça mais alterações na configuração do servidor da web.
2: Redirecionar - Faça todas as solicitações redirecionarem para o acesso HTTPS seguro. Escolha isto para
novos sites ou se você tiver certeza de que seu site funciona em HTTPS. Você pode desfazer isso
mude editando a configuração do seu servidor web.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Selecione o número apropriado [1-2] e [enter] (pressione 'c' para cancelar): 2
Redirecionando todo o tráfego na porta 80 para ssl em / etc / nginx / sites-enabled / default
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Parabéns! Você ativou https: // SUBDOMAIN com sucesso.NOME DO DOMÍNIO.TLD
 
Você deve testar sua configuração em:
https: // www.ssllabs.com / ssltest / analise.html?d = SUBDOMÍNIO.NOME DO DOMÍNIO.TLD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

ANOTAÇÕES IMPORTANTES:
- Parabéns! Seu certificado e cadeia foram salvos em:

/ etc / letsencrypt / live / SUBDOMAIN.NOME DO DOMÍNIO.TLD / fullchain.pem

Seu arquivo de chave foi salvo em:

/ etc / letsencrypt / live / SUBDOMAIN.NOME DO DOMÍNIO.TLD / privkey.pem

Conforme mostrado no exemplo acima, você só precisa fornecer um endereço de e-mail válido e seu nome de domínio para obter o certificado. Este certificado está registrado em / etc / letsencrypt / live / SUBDOMAIN.NOME DO DOMÍNIO.TLD. O último diretório terá o nome de seu FQDN.

O aspecto mais importante é selecionar a opção Redirecionar e ela fará o trabalho de redirecionar todo o tráfego HTTP para HTTPS. Se você está curioso para saber quais são essas mudanças, você pode inspecionar os arquivos de configuração em / etc / nginx / para obter a essência disso.

2. Editando os arquivos de configuração

Se você deseja configurar manualmente o seu servidor para usar os certificados. Para obter os certificados usando o certbot, execute:

$ sudo certbot certonly

Como antes, os certificados são salvos no diretório / etc / letsencrypt / live / yourdomainname.com /

Agora podemos configurar o Nginx para usar os arquivos neste diretório. Em primeiro lugar, vou me livrar do layout de diretório específico do Debian. O arquivo de configuração do site da página padrão é / etc / nginx / sites-available / default subdiretório com um link simbólico para / etc / nginx / site-enabled.

Vou apenas deletar o link simbólico e mover o arquivo de configuração para / etc / nginx / conf.d com um .extensão conf apenas para manter as coisas mais generalizadas e aplicáveis ​​a outras distros também.

$ sudo rm / etc / sites-enabled / default
$ sudo mv / etc / nginx / sites-available / default / etc / nginx / conf.d / default.conf
$ sudo service nginx restart

Vou modificar este arquivo de configuração padrão para demonstrar como o TLS está habilitado.

A seguir estão os conteúdos dentro do seu arquivo de configuração padrão, sem as seções comentadas. As seções destacadas são aquelas que você deve adicionar à configuração do seu servidor para habilitar o TLS e o último bloco neste arquivo de configuração detecta se o esquema está usando TLS ou não. Se o TLS não estiver sendo usado, ele simplesmente retornará um código de redirecionamento 301 para o cliente e alterará o URL para usar https. Dessa forma, você não perderá usuários

servidor
escuta 80 default_server;
escute [::]: 80 default_server;
ouvir 443 ssl;
ssl_certificate / etc / letsencrypt / live / SUBDOMAIN.DOMÍNIO.TLS / fullchain.pem;
ssl_certificate_key / etc / letsencrypt / live / SUBDOMAIN.DOMÍNIO.TLD / privkey.pem;
ssl_session_cache compartilhado: le_nginx_SSL: 1m;
ssl_session_timeout 1440m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers ativado;
ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305: ECDHE-
ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256
-GCM-SHA384: ECDHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES256
-GCM-SHA384: ECDHE-ECDSA-AES128-SHA256: ECDHE-RSA-AES128-SHA256: ECDHE-ECDSA-AES128
-SHA: ECDHE-RSA-AES256-SHA384: ECDHE-RSA-AES128-SHA: ECDHE-ECDSA-AES256-SHA384: ECDHE
-ECDSA-AES256-SHA: ECDHE-RSA-AES256-SHA: DHE-RSA-AES128-SHA256: DHE-RSA-AES128-SHA: DHE
-RSA-AES256-SHA256: DHE-RSA-AES256-SHA: ECDHE-ECDSA-DES-CBC3-SHA: ECDHE-RSA-DES-CBC3
-SHA: EDH-RSA-DES-CBC3-SHA: AES128-GCM-SHA256: AES256-GCM-SHA384: AES128-SHA256: AES256
-SHA256: AES128-SHA: AES256-SHA: DES-CBC3-SHA:!DSS ";
root / var / www / html;
índice de índice.índice html.índice htm.nginx-debian.html;
nome do servidor _;
localização /
try_files $ uri $ uri / = 404;

if (esquema de $ != "https")
return 301 https: // $ host $ request_uri;

 

Existem alguns parâmetros extras adicionados a este arquivo de configuração. Incluindo parâmetros que declaram o tempo limite, a versão TLS que você deve usar e quais criptografias o servidor usará. Isso foi emprestado das configurações recomendadas (mas opcionais) do Certbot para Nginx.

Agora, verifique se o arquivo de configuração é válido e reinicie o servidor.

$ sudo nginx -t
nginx: o arquivo de configuração / etc / nginx / nginx.sintaxe conf está ok
nginx: arquivo de configuração / etc / nginx / nginx.O teste de configuração foi bem sucedido
$ sudo service nginx restart

Conclusão

Você pode aplicar a mesma abordagem para aplicativos e serviços da web mais complicados que precisam de HTTPS. Letsencrypt permite que você emita certificados para vários nomes de domínio ao mesmo tempo, e você pode hospedar vários sites por trás de seu servidor da web nginx com bastante facilidade. Se você seguiu o exemplo acima, tente acessar seu site usando http (http: // SUBDOMAIN.DOMÍNIO.TLD) e você será redirecionado para HTTPS automaticamente.

Para outros servidores da web, como o Apache, use o plug-in certbot apropriado ou consulte sua documentação oficial.

Como alterar as configurações do mouse e touchpad usando Xinput no Linux
A maioria das distribuições Linux vem com a biblioteca “libinput” por padrão para lidar com eventos de entrada em um sistema. Ele pode processar event...
Remapeie os botões do mouse de maneira diferente para software diferente com o controle de botão do mouse X
Talvez você precise de uma ferramenta que possa fazer o controle do seu mouse mudar com cada aplicativo que você usa. Se for esse o caso, você pode ex...
Análise do mouse sem fio Microsoft Sculpt Touch
Recentemente li sobre o Microsoft Sculpt Touch mouse sem fio e decidi comprá-lo. Depois de usá-lo por um tempo, decidi compartilhar minha experiência ...