Como redirecionar HTTP para HTTPS no balanceador de carga de aplicativos da AWS?

7

Nosso site precisa de conformidade com a HIPAA, então tudo precisa ser criptografado. Não quero que o cliente receba uma mensagem de erro quando inserir " link : //mysite.com", portanto, eu preciso oferecer suporte a HTTP e HTTPS e redirecionar HTTP para HTTPS. Estou certo?

Eu fiz isso corretamente nos servidores da web. Portanto, se eu me conectar diretamente aos servidores da Web, o HTTP será redirecionado automaticamente para o HTTPS. Tudo bem.

Mas os servidores da Web estão por trás de um balanceador de carga de aplicativos da AWS. Não sei como redirecionar HTTP para HTTPS no ELB. Portanto, os navegadores de clientes ainda podem se conectar ao ELB por meio de HTTP.

Como configurar o HTTP = > HTTPS em um balanceador de carga de aplicativos da AWS?

Em outras palavras, tenho certeza de que a conexão entre o ELB e os servidores da Web é HTTPS, mas como garantir que a conexão entre os navegadores do cliente e o ELB seja HTTPS?

    
por Silly Dude 14.09.2017 / 15:55

2 respostas

2

Em julho de 2018 , isso é suportado em balanceadores de carga de aplicativos.

  • Adicione / edite seu HTTP:80 ouvinte
  • Defina a ação para Redirect
  • protocolo: https
  • porta: 443
  • defina o próximo menu suspenso para Original host, path, query
  • definir o último menu suspenso para 301 - Permanently moved

Imagem das configurações de um ouvinte HTTP para HTTPS no balanceador de carga de aplicativos da AWS

    
por 07.11.2018 / 16:46
1

Geralmente, o que acontece é que o ELB está configurado para receber https (porta 443) e encaminhar para a instância do EC2 (destino do balanceador de carga) em http (porta 80).

O servidor da Web de back-end redireciona essas solicitações para a porta 443 no balanceador de carga, causando um loop infinito de redirecionamento (entre o balanceador de carga e o servidor da web de back-end).

Uma mensagem de erro comum é ERR_TOO_MANY_REDIRECTS .

A solução é olhar para o X-Forwarded-Proto, que é o protocolo visto pelo balanceador de carga, ao decidir sobre o redirecionamento.

Para o nginx, a configuração ficará assim:

server {
    listen   80;
    server_name    www.example.org;   
    if ($http_x_forwarded_proto = 'http') {
         return 301 https://$server_name$request_uri;   
    }
}

e para o apache .htaccess algo como isto:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

NOTA: Embora alguém possa pensar que seria conveniente se isso pudesse ser tratado sem a reconfiguração do servidor web, a partir da primavera de 2018 não há como resolver isso usando apenas o ELB, ou seja, você deve configurar seu servidor web para fazer esse trabalho .

    
por 12.04.2018 / 16:04