Come reindirizzare HTTP a HTTPS su AWS Application Load Balancer?


12

Il nostro sito Web richiede la conformità HIPAA, quindi tutto deve essere crittografato. Non voglio che il client riceva un messaggio di errore quando inserisce " http : //mysite.com", quindi devo supportare sia HTTP che HTTPS e reindirizzare HTTP su HTTPS. Ho ragione?

L'ho fatto correttamente sui server web. Quindi, se mi collego direttamente ai server Web, HTTP viene automaticamente reindirizzato a HTTPS. Tutto bene.

Ma i server Web si trovano dietro un bilanciamento del carico delle applicazioni AWS. Non so come reindirizzare HTTP a HTTPS sull'ELB. Quindi i browser client possono ancora connettersi all'ELB tramite HTTP.

Come impostare HTTP => HTTPS su un bilanciamento del carico delle applicazioni AWS?

In altre parole, sono sicuro che la connessione tra ELB e i server Web sia HTTPS, ma come assicurarsi che la connessione tra i browser client e ELB sia HTTPS?


Non lo fai su LB. Lo fai sulle istanze, in base all'intestazione che X-Forwarded-ProtoLB invia.
Ceejayoz,

Non sono una persona server - sono un programmatore C #, quindi mi scusi per essere stupido - Ho usato il modulo di riscrittura URL per impostare il reindirizzamento sul server Windows. Funziona se mi connetto direttamente al server. Ma se mi connetto all'ELB, posso ancora connettermi con HTTP. Perché?
Silly Dude,

L'ALB è in ascolto su 443 con un certificato SSL su di esso? Per essere sicuri nella tua domanda, vuoi anche SSL tra ALB e i server?
strongjz,

Risposte:


-4

È possibile aggiungere la configurazione elencata di seguito al file .htaccess. Ma prima assicurati che mod_rewrite sia abilitato sul server e che il file .htaccess non sia negato.

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

Per una spiegazione dettagliata, consultare la documentazione ufficiale di aws end. https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/


7
Questa risposta sembra coinvolgere il server HTTP Apache
Paul Draper

2
OP chiede come configurare ELB in modo da spiegare come configurare Apache? Hanno detto esplicitamente di aver già configurato Apache per eseguire il reindirizzamento. Per favore cancella la tua risposta.
Cerin


1

Di solito ciò che accade è che ELB è impostato per ricevere https (porta 443) e inoltrare all'istanza EC2 (destinazione di bilanciamento del carico) su http (porta 80).

Il server Web back-end reindirizza queste richieste alla porta 443 sul bilanciamento del carico, causando un ciclo infinito di reindirizzamento (tra il bilanciamento del carico e il server Web back-end).

Un messaggio di errore comune è ERR_TOO_MANY_REDIRECTS.

La soluzione è guardare l'X-Forwarded-Proto, che è il protocollo visto dal bilanciamento del carico, quando si decide sul reindirizzamento.

Per nginx la configurazione sarà simile a questa:

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

e per apache .htaccess qualcosa del genere:

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

NOTA: anche se si potrebbe pensare che sarebbe conveniente se questo potesse essere gestito senza la riconfigurazione del server web, a partire dalla primavera 2018 non c'è modo di risolverlo usando solo ELB, cioè è necessario configurare il proprio server web per farlo funzionare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.