Come aggiungere un certificato SSL ad AWS EC2 con l'aiuto del nuovo servizio AWS Certificate Manager


91

AWS ha messo a punto un nuovo servizio AWS Certificate Manager . Una cosa che ho ottenuto dalla descrizione è che se utilizziamo questo servizio non dobbiamo più pagare per il certificato.

Forniscono certificati per Elastic Load Balancer (ELB) e CloudFront, ma non ho trovato EC2 da nessuna parte.

C'è un modo per utilizzare il certificato con EC2?


1
potresti dare un'occhiata a letsencrypt.org per certificati gratuiti e affidabili, con collaboratori come chrome e facebook sembra piuttosto buono
Tom


1
Ow non lo sapevo. Tuttavia penso che abbiano ragione a non permetterlo. Potresti piuttosto creare alias su un altro dominio (tramite Route53 ad esempio) e non utilizzare il nome dns aws predefinito fornito?
Tom,

Di recente mi sono imbattuto in un video [aprile - 2020] in cui creano un certificato SSL \ TLS con AWS Certificate Manager e poi lo inseriscono in un'istanza EC2 dietro un bilanciatore del carico. youtu.be/bWPTq8z1vFY È stato davvero utile.
nktsamba

Risposte:


110

D: Posso utilizzare i certificati sulle istanze di Amazon EC2 o sui miei server?

No. Al momento, i certificati forniti da ACM possono essere utilizzati solo con servizi AWS specifici.


D: Con quali servizi AWS posso utilizzare i certificati forniti da ACM?

Puoi utilizzare ACM con i seguenti servizi AWS:

• Bilanciamento elastico del carico

• Amazon CloudFront

• AWS Elastic Beanstalk

• Amazon API Gateway

https://aws.amazon.com/certificate-manager/faqs/

Non puoi installare i certificati creati da Amazon Certificate Manager (ACM) su risorse a cui hai accesso diretto di basso livello, come EC2 o server esterni ad AWS, perché non ti viene fornito l'accesso alle chiavi private. Questi certificati possono essere distribuiti solo su risorse gestite dall'infrastruttura AWS - ELB e CloudFront - perché l'infrastruttura AWS detiene le uniche copie delle chiavi private per i certificati che genera e le mantiene sotto stretta sicurezza con controlli di accesso interni verificabili .

Dovresti avere le tue macchine EC2 in ascolto dietro CloudFront o ELB (o entrambi, in cascata, funzionerebbero anche) per utilizzare questi certificati per i contenuti provenienti da EC2 ... perché non puoi installare questi certificati direttamente sulle macchine EC2 .


13
La buona notizia è che non ci sono costi se hai emesso un certificato e hai appena scoperto qui che non puoi installarlo.
kraftydevil

1
lol @kraftydevil Immagino che tu abbia ragione, ecco. Nota che letsencrypt.org è una fonte legittima, riconosciuta e senza scopo di lucro per certificati SSL gratuiti che puoi installare ovunque tu voglia. (E, potrei aggiungere, non ho alcuna affiliazione con Let's Encrypt.)
Michael - sqlbot

6
@EngineerDollery no, questo è vero solo per un caso specifico. È assolutamente possibile utilizzare Encrypt Let su EC2. Quello che non puoi fare è ottenere un certificato Let's Encrypt per un *.amazonaws.comnome host EC2 perché, abbastanza sensatamente, il criterio Let's Encrypt non lo consente ... ma per un dominio che controlli che punta a un IP dell'istanza EC2, o ELB, o CloudFront, puoi sicuramente usare Let's Encrypt, come ovunque.
Michael - sqlbot

2
Collegamento a un esempio con un certificato di crittografia automatica distribuito su EC2: docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Efren

Ho seguito con la configurazione ELB tutto ora che ricevo 502 Bad Gateway quando ho indicato un record
sull'ELB

2

No, non puoi utilizzare aws certificate manager per distribuire i certificati su EC2. I certificati del gestore certificati possono essere distribuiti solo su cloudfront e bilanciamento del carico elastico. Inoredr per usarlo su ec2, è necessario mettere elb sopra ec2, in modo che la richiesta dal client al bilanciatore del carico sarà protetta da https e da elb a ec2 webserver sarà su http.


1

Se utilizzi AWS ACM Cert solo per scopi interni, potresti probabilmente utilizzare AWS ACM Private CA per emettere i certificati (penso che tu possa usarlo anche per scopi di traffico pubblico / esterno se la tua CA radice è una CA pubblicamente attendibile).

https://docs.aws.amazon.com/acm-pca/latest/userguide/PcaGetStarted.html

Durante l'avvio dell'applicazione / EC2 / container, impostare un passaggio per esportare il certificato / chiave privata emesso dalla CA privata ACM nella destinazione e iniziare a fare riferimento a quello per servire il traffico.

https://docs.aws.amazon.com/cli/latest/reference/acm/export-certificate.html

Una cosa buona è che puoi controllare chi può chiamare la funzione di esportazione del certificato utilizzando il ruolo IAM in modo che non tutti possano scaricare la chiave privata del certificato.

Uno svantaggio di questo è che la CA privata è un costoso servizio AWS ($ 400 / mese). https://aws.amazon.com/certificate-manager/pricing/


Non puoi usare export-certificate con ACM PCA, ma non ne hai nemmeno bisogno: avrai già la chiave privata e get-certificate ti fornisce il certificato e la catena.
Willaert gratuito dal

@FreeWillaert Sono abbastanza sicuro che non otterrai la parte della chiave privata con get-certificate. controllare questa documentazione CLI . e questo . Controlla entrambi gli output delle risposte cli. Ho già testato questi comandi CLI.
Imran

@FreeWillaert yep :). Il comando CLI sopra può essere utilizzato nello script di avvio di Docker o nello script dei dati utente EC2 per scaricare il certificato della chiave privata in runtime e iniziare a utilizzarlo per servire il traffico TLS. Specialmente in ASG. La parte buona è che puoi controllare chi può chiamare il comando CLI sopra utilizzando i ruoli IAM, quindi non tutti hanno accesso alle chiavi private.
Imran

1
@Imran dovresti scrivere in grassetto One downside with this is, private CA is expensive AWS service($400/month).in alto, ad esempio mi mancherebbe se non avessi letto questa risposta la seconda volta
Piekarski D

@PiekarskiD fatto. Grazie per il suggerimento !!. se ti piace la mia risposta, puoi votare sempre a favore !!.
Imran

0

Aggiungendo ai commenti sopra, non è possibile utilizzare AWS Certificate Manager per questo, ma è possibile aggiungere un certificato Let's Encrypt a ec2 su un server Windows che esegue IIS ed è abbastanza semplice:

  1. Associa un IP elastico alla tua istanza ec2.

  2. Assicurati di avere un dominio registrato. Non puoi utilizzare ec2----------.us-east-1.compute.amazonaws.com nomi di tipo forniti con la tua istanza.

  3. Attraverso le impostazioni DNS del tuo provider di dominio, il tuo dominio punta al tuo IP elastico.

  4. Connettiti alla tua istanza ec2 e aggiungi il tuo nome di dominio ai collegamenti del sito.

  5. Vai su https://github.com/PKISharp/win-acme/releases

  6. Guarda sotto le risorse e usa l'ultima versione (win-acme.v2.0.10.444.zip ad esempio). Questa è l'unica cartella delle risorse di cui hai bisogno.

  7. Decomprimere la cartella, aprire il terminale come amministratore e cd nella cartella decompressa.

  8. Esegui wacs.exe e segui le istruzioni.

  9. Assicurati che il gruppo di sicurezza assegnato alla tua istanza consenta il traffico (almeno il tuo IP) attraverso la porta HTTPS che hai scelto in IIS; questa è la porta 443 per impostazione predefinita.

Ho trovato utili i link sottostanti quando lo stavo cercando. Ecco un video che utilizza una versione precedente se hai bisogno di ulteriore aiuto, ma è la stessa idea.

https://www.youtube.com/watch?v=fq5OUOjumuM

Anche questo articolo potrebbe essere utile:

https://weblog.west-wind.com/posts/2016/feb/22/using-lets-encrypt-with-iis-on-windows

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.