Configurando o aplicativo Elastic Beanstalk com HTTPS

2

Eu tenho um aplicativo de trabalho no Elastic Beanstalk e gostaria de torná-lo acessível APENAS através de HTTPS. Como eu gostaria que o aplicativo fosse dimensionado automaticamente, preciso configurar o HTTPS no nível do Load Balancer e não o nível único da instância do EC2. Estou seguindo este tutorial sobre como configurar o HTTPS com o Elastic Beanstalk. No entanto, quando eu termino o tutorial, meu domínio nunca é carregado (em http ou https) e recebo um tempo limite de sessão no navegador.

Aqui está o que eu tenho até agora:

  • Aplicativo de trabalho no Elastic Beanstalk. Detalhes: Aplicativo Java EE em execução em um contêiner do Glassfish Docker pré-configurado.
  • Um domínio válido do Route 53 que está configurado para o meu aplicativo Elastic Beanstalk.
  • Um certificado assinado da GoDaddy, que foi criado e enviado para o IAM de acordo com o link do tutorial que forneci.

Agora, esta é a parte em que acredito que os problemas surgem. A etapa 4 do tutorial informa que preciso atualizar meu grupo de segurança (muito ambíguo quanto a qual). Portanto, atualizo o grupo de segurança do balanceador de carga dessa forma (remova solicitações de http e apenas suporte a https):

Emseguida,nasdefiniçõesdeconfiguraçãodoElasticBeanstalkEnvironment,configuro-odaseguinteforma:

(Seeudesativaraportadolistener,odomínionuncaserácarregadoemhttpouhttps).Comessasconfigurações,seeuforparaomeudomínio(ex:myapp.com),elecontinuarácarregandoatéqueonavegadorexibaumaexceçãodetempolimite.Seeuespecificaroprotocolo(ex: link ), ele continuará carregando até que o navegador exiba uma exceção de tempo limite. Se eu for para um link específico com o protocolo HTTPS especificado (ex: link ), ele será carregado (Nota: app funciona bem antes tentando aplicar SSL; página de boas-vindas é configurada com o servidor). O que estou fazendo errado?

Pergunta resumida: Como configurar meu aplicativo Elastic Beanstalk para funcionar SOMENTE em HTTPS?

Resultado desejado: O usuário digita o domínio do aplicativo na barra de endereço (ex: myapp.com) e o leva ao meu aplicativo protegido por HTTPS (ex: link ).

    
por chRyNaN 08.08.2015 / 19:02

1 resposta

3

Você não faz isso desativando o acesso http.

Você faz isso no servidor da Web da sua instância. Quando uma solicitação chega sem o cabeçalho X-Forwarded-Proto: https que o ELB adiciona quando a solicitação recebida chega por meio de https, seus servidores da web precisam enviar um HTTP/1.1 301 Moved Permanently de redirecionamento para o navegador, especificando Location: https://... na resposta.

Não há como o navegador de um novo visitante saber que ele deve tentar novamente com https, a menos que seu aplicativo o informe.

Existem maneiras alternativas e mais avançadas de realizar isso, mas elas ainda não envolvem configurações de ELB (balanceador de carga elástica) ou EB (beanstalk elástico) ou grupo de segurança.

    
por 09.08.2015 / 01:08