Configurazione HTTPS in Amazon EC2


101

Come abilitiamo HTTPS in Amazon EC2? Il nostro sito funziona su HTTP.


bella domanda, ma ho impostato il gruppo di sicurezza e nessun incantesimo accade
Shark Deng

Risposte:


76

Innanzitutto, è necessario aprire la porta HTTPS (443). Per farlo, vai su https://console.aws.amazon.com/ec2/ e fai clic sul Security Groupscollegamento a sinistra, quindi crea un nuovo gruppo di sicurezza con disponibile anche HTTPS. Quindi, aggiorna semplicemente il gruppo di sicurezza di un'istanza in esecuzione o crea una nuova istanza utilizzando quel gruppo.

Dopo questi passaggi, il tuo lavoro su EC2 è terminato ed è tutto un problema dell'applicazione.


15
Sono stato in grado di aggiungere una nuova regola per la porta 443 al gruppo di sicurezza utilizzato dall'istanza e ha appena iniziato a funzionare senza nemmeno riavviarlo.
Dmitry Efimenko

9
you can't change a security group of a running instance, even rebooting- Penso che questa limitazione sia stata rimossa da quando è stata pubblicata questa risposta.
Yuriy Nakonechnyy

11
Non è necessario modificare il gruppo di sicurezza, puoiEdit inbound rules
Khoi

8
@ nikhil84 aggiungendo HTTPS nel gruppo di sicurezza hai aperto solo la porta 443 sulla macchina che è il passaggio 1. Secondo, devi configurare il tuo server su quella macchina per ascoltare la porta 443 (invece della porta HTTP predefinita 80) e accettare il traffico HTTPS. Quale server usi?
Yuriy Nakonechnyy

4
@ nikhil84 si prega di seguire le linee guida elencate qui: digitalocean.com/community/tutorials/… per configurare https su Apache HTTPD
Yuriy Nakonechnyy

40

Questa risposta è rivolta a qualcuno che acquista un dominio in un altro sito (come GoDaddy) e desidera utilizzare il certificato gratuito di Amazon con Certificate Manager

Questa risposta utilizza Amazon Classic Load Balancer (a pagamento), vedere i prezzi prima di utilizzarlo


Passaggio 1 : richiedere un certificato con Certificate Manager

Vai a Gestione certificati> Richiedi certificato> Richiedi un certificato pubblico

Sul nome di dominio che si aggiungerà myprojectdomainname.come *.myprojectdomainname.come andare su Avanti

Scegli Convalida e-mail e Conferma e richiesta

Apri l'email che hai ricevuto (sull'account email che hai acquistato il dominio) e approva la richiesta

Dopodiché, controlla se lo stato di convalida di myprojectdomainname.come *.myprojectdomainname.comè riuscito, in caso positivo puoi continuare con il passaggio 2

Passaggio 2 : creare un gruppo di sicurezza per un bilanciamento del carico

Su EC2 vai a Gruppi di sicurezza> e Crea un gruppo di sicurezza e aggiungi http e https in entrata

Sarà qualcosa del tipo: inserisci qui la descrizione dell'immagine

Passaggio 3 : creare il bilanciamento del carico

EC2> Load Balancer> Crea Load Balancer> Classic Load Balancer (terza opzione)

Crea LB all'interno: il vpc del tuo progetto On Load Balancer Protocol aggiunge Http e Https inserisci qui la descrizione dell'immagine

Avanti> Seleziona uscita dal gruppo di sicurezza

Scegli il gruppo di sicurezza che hai creato nel passaggio precedente

Avanti> Scegli certificato da ACM

Seleziona il certificato del passaggio 1

Avanti>

durante il controllo dello stato ho usato il percorso ping / (una barra invece di /index.html)

Passaggio 4 : associa la tua istanza al gruppo di sicurezza del bilanciatore del carico

EC2> Istanze> fai clic sul tuo progetto> Azioni> Rete> Modifica gruppi di sicurezza

Aggiungi il gruppo di sicurezza del tuo Load Balancer

Passaggio 5

EC2> Load Balancer> Fai clic sul load balancer che hai creato> copia il nome DNS (record A), sarà qualcosa di simile myproject-2021611191.us-east-1.elb.amazonaws.com

Vai a Route 53> Routes Zones> fai clic sul nome del dominio> Vai a Records Sets (Se non hai il tuo dominio qui, crea una zona ospitata con Domain Name: myprojectdomainname.come Type: Public Hosted Zone)

Controlla se hai un tipo di record A (probabilmente no), crea / modifica set di record con nome vuoto, digita A, alias Sì e scegli come target il DNS che hai copiato

Crea anche un nuovo set di record di tipo A , nome *.myprojectdomainname.com, alias Sì e Target tuo dominio (myprojectdomainname.com). Ciò renderà possibile l'accesso al tuo sito con www.myprojectdomainname.com e subsite.myprojectdomainname.com. Nota: sarà necessario configurare il proxy inverso (Nginx / Apache) per farlo.

Su NS copia i 4 valori dei server dei nomi da utilizzare nel passaggio successivo, sarà qualcosa del tipo:

ns-362.awsdns-45.com ns-1558.awsdns-02.co.uk ns-737.awsdns-28.net ns-1522.awsdns-62.org

Vai a EC2> Istanze> e copia anche l'IP pubblico IPv4

Passaggio 6

Sul sito del registro del dominio che hai acquistato il dominio (nel mio caso GoDaddy)

Modificare il percorso in http : <Your IPv4 Public IP Number>e selezionare Avanti con mascheramento

Cambia i server dei nomi (NS) nei 4 NS che hai copiato, l'operazione può richiedere 48 ore per avere effetto


Devo utilizzare un bilanciatore del carico se voglio https?
Curtis

Ho fatto tutto questo ma ottengo ERR_CONNECTION_TIMED_OUT quando raggiungo il mio dominio in un browser
Curtis

1
Avevo bisogno di creare un bilanciatore del carico con un nuovo gruppo target sulla porta 80, quindi modificare i listener per utilizzare la porta 80. Ora funziona. Grazie.
Curtis

1
@Curtis Load balancer non è l'unica opzione per utilizzare https, puoi anche configurare "consente di crittografare" all'interno del tuo EC2
DigaoParceiro

@DigaoParceiro cosa hai fatto con il passaggio 5. nome DNS copiato?
Prashant

9

Le istanze di Amazon EC2 sono solo macchine virtuali, quindi configureresti SSL nello stesso modo in cui lo configureresti su qualsiasi server.

Non dici su quale piattaforma ti trovi, quindi è difficile fornire ulteriori informazioni.


Ciao, sto eseguendo un'istanza T2.Micro Amazon Linux EC2. Sto usando node.js per sostenere il server. Sto ascoltando la porta 443 nel mio script del server e il mio gruppo di sicurezza è configurato per la porta 443. Cos'altro devo fare per abilitare HTTPS? Ho bisogno di un certificato, giusto? Problemi a trovare informazioni decenti su questa operazione che NON si basano su Elastic Beanstalk.
Stephen Tetreault

2
@SMT: dai un'occhiata a letsencrypt.org per i certificati gratuiti e con rinnovo automatico. Ci sono molte informazioni (tramite google) su come configurarlo utilizzando node. Non c'è nient'altro di specifico AWS / EC2 che devi fare.
Geoff Appleford

2
Grazie per la risposta! In realtà l'ho fatto funzionare l'altro giorno e ho semplificato alcuni passaggi. Se qualcuno sta leggendo questo dal futuro: github.com/MSCHF/aws-ec2-node-npm-setup
Stephen Tetreault

5

Una vecchia domanda, ma vale la pena menzionare un'altra opzione nelle risposte. Nel caso in cui il sistema DNS del tuo dominio sia stato definito in Amazon Route 53, puoi utilizzare il servizio Amazon CloudFront davanti al tuo EC2 e allegare un certificato SSL Amazon gratuito. In questo modo trarrai vantaggio sia dall'avere una CDN per una consegna più rapida dei contenuti, sia dalla protezione del tuo dominio con il protocollo HTTPS.


C'è qualche riferimento o blog in cui vengono menzionati i passaggi per raggiungere questo obiettivo?
Saurabh Yadav

in questo video atiqur rahman ottiene il certificato ssl utilizzando amazon certificate manager e quindi configura cloud front con l'istanza EC2. Dopo la configurazione, http / 2 viene abilitato automaticamente.
Sachithra Dilshan,


2

Utilizza Elastic Load Balacing , supporta la terminazione SSL in Load Balancer, incluso l'offload della decrittografia SSL dalle istanze dell'applicazione e la gestione centralizzata dei certificati SSL.


15
Non usi ELB semplicemente per fornire SSL, in realtà è una risposta piuttosto fuorviante. Il tuo server deve fornire SSL a prescindere, quindi l'aggiunta di un bilanciatore del carico è solo un costo aggiuntivo se non ne hai bisogno. È anche una terminazione SSL nel software, quindi l'SSL tra il bilanciamento del carico e i server è un passaggio aggiuntivo che influisce sulle prestazioni.
Thomas the Tank Engine

1
Sono d'accordo con il tuo commento. Aggiungerà costi aggiuntivi e influirà sulle prestazioni. Non conosciamo i loro requisiti esatti rispetto al caricamento sui loro server, quindi potrebbe essere ancora una strada da percorrere. Ma non capisco la tua osservazione "Il tuo server deve fornire SSL a prescindere", perché è necessario? Il bilanciamento del carico include anche l'offload di SSL. Grazie.
Peter Hulsen

2
Sì vero. Potresti usarlo per fornire l'SSL in modo semplice. Sto solo pensando che le istanze abbiano ancora valori DNS pubblici in cui gli utenti potrebbero accedervi direttamente per qualsiasi motivo. Se ciò accadesse, potrebbe essere che tu voglia forzare anche questo a utilizzare SSL.
Thomas the Tank Engine

So che questo commento è in ritardo, ma dalla mia comprensione se vuoi usare un nome di dominio registrato, allora devi usare ELB, perché l'IP EC2 è considerato 'non permanente' e quindi non può usare il tuo certificato SSL. D'altra parte, se stai usando solo il DNS fornito da Amazon, forse non ha bisogno di ELB, non ho controllato.
hexicle


0

Una delle migliori risorse che ho trovato è stata quella di utilizzare Let's encrypt, non è necessario ELB né cloudfront per l'istanza EC2 per avere HTTPS, basta seguire le seguenti semplici istruzioni: crittografiamo Accedi al tuo server e segui i passaggi nel collegamento.

È anche importante, come menzionato da altri, che tu abbia la porta 443 aperta modificando i tuoi gruppi di sicurezza

È possibile visualizzare il certificato o qualsiasi altro sito Web modificando il nome del sito in questo collegamento

Non dimenticare che è valido solo per 90 giorni

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.