Comment ajouter un certificat SSL à AWS EC2 à l'aide du nouveau service AWS Certificate Manager

91

AWS a mis au point un nouveau service AWS Certificate Manager . Une chose que j'ai tirée de la description est que si nous utilisons ce service, nous n'avons plus à payer pour le certificat.

Ils fournissent des certificats pour Elastic Load Balancer (ELB) et CloudFront, mais je n'ai trouvé EC2 nulle part.

Existe-t-il un moyen d'utiliser le certificat avec EC2?

Bhavik Joshi
la source
1
vous pouvez jeter un œil à letsencrypt.org pour obtenir des certificats gratuits et fiables, avec des contributeurs tels que chrome et facebook, ça a l'air plutôt bien
Tom
1
Ow je ne savais pas à ce sujet. Cependant, je pense qu'ils ont raison de ne pas permettre cela. Pourriez-vous plutôt créer des alias sur un autre domaine (via Route53 par exemple) et ne pas utiliser le nom aws dns par défaut fourni?
Tom
Je viens de tomber sur une vidéo [avril - 2020] dans laquelle ils créent un certificat SSL \ TLS avec AWS Certificate Manager, puis le placent sur une instance EC2 derrière un équilibreur de charge. youtu.be/bWPTq8z1vFY C'était vraiment utile.
nktsamba le

Réponses:

109

Q: Puis-je utiliser des certificats sur des instances Amazon EC2 ou sur mes propres serveurs?

Non. Pour le moment, les certificats fournis par ACM ne peuvent être utilisés qu'avec des services AWS spécifiques.


Q: Avec quels services AWS puis-je utiliser les certificats fournis par ACM?

Vous pouvez utiliser ACM avec les services AWS suivants:

• Équilibrage de charge élastique

• Amazon CloudFront

• AWS Elastic Beanstalk

• Amazon API Gateway

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

Vous ne pouvez pas installer les certificats créés par Amazon Certificate Manager (ACM) sur des ressources auxquelles vous avez un accès direct de bas niveau, comme EC2 ou des serveurs en dehors d'AWS, car vous n'avez pas accès aux clés privées. Ces certificats ne peuvent être déployés que sur des ressources gérées par l'infrastructure AWS - ELB et CloudFront - car l'infrastructure AWS détient les seules copies des clés privées pour les certificats qu'elle génère, et les maintient sous une sécurité stricte avec des contrôles d'accès internes vérifiables .

Il faudrait que vos machines EC2 écoutent derrière CloudFront ou ELB (ou les deux, en cascade, fonctionneraient également) afin d'utiliser ces certificats pour le contenu provenant d'EC2 ... car vous ne pouvez pas installer ces certificats directement sur les machines EC2 .

Michael - sqlbot
la source
11
La bonne nouvelle est qu'il n'y a aucun frais si vous avez émis un certificat et que vous venez de découvrir ici que vous ne pouvez pas l'installer.
kraftydevil
1
lol @kraftydevil Je suppose que vous avez un point, là. Notez que letsencrypt.org est une source légitime, reconnue et à but non lucratif pour les certificats SSL gratuits que vous pouvez installer où vous le souhaitez. (Et, je pourrais ajouter, je n'ai aucune affiliation avec Let's Encrypt.)
Michael - sqlbot
6
@EngineerDollery non, cela n'est vrai que pour un cas spécifique. Vous pouvez absolument utiliser Let's Encrypt sur EC2. Ce que vous ne pouvez pas faire, c'est obtenir un certificat Let's Encrypt pour un *.amazonaws.comnom d'hôte EC2 car, assez raisonnablement, la stratégie Let's Encrypt ne le permet pas ... mais pour un domaine que vous contrôlez qui pointe vers une IP d'instance EC2, ou ELB, ou CloudFront, vous pouvez très certainement utiliser Let's Encrypt, comme partout ailleurs.
Michael - sqlbot
2
Lien vers un exemple avec un certificat de chiffrement automatisé déployé sur EC2: docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Efren
J'ai suivi avec la configuration ELB tout maintenant, je reçois 502 Bad Gateway quand j'ai pointé un enregistrement A vers l'ELB
MuaathAli
2

Non, vous ne pouvez pas utiliser le gestionnaire de certificats aws pour déployer des certificats sur EC2. Les certificats du gestionnaire de certificats ne peuvent être déployés que sur cloudfront et un équilibreur de charge élastique. Inoredr pour l'utiliser sur ec2, vous devez placer elb au-dessus de ec2, de sorte que la demande du client à l'équilibreur de charge soit protégée par https et d'elb au serveur Web ec2 sera sur http.

prasoon
la source
1

Si vous utilisez AWS ACM Cert à des fins internes uniquement, vous pouvez probablement utiliser AWS ACM Private CA pour émettre les certificats (je pense que vous pouvez également l'utiliser à des fins de trafic public / externe si votre autorité de certification racine est une autorité de certification de confiance publique).

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

Lors du démarrage de l'application / EC2 / conteneur, définissez une étape pour exporter votre certificat / clé privée émis par l'autorité de certification privée ACM vers votre destination et commencez à vous y référer pour servir le trafic.

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

Une bonne chose est que vous pouvez contrôler qui peut appeler la fonctionnalité de certificat d'exportation à l'aide du rôle IAM afin que tout le monde ne puisse pas télécharger la clé privée du certificat.

Un inconvénient est que l'autorité de certification privée est un service AWS coûteux (400 USD / mois). https://aws.amazon.com/certificate-manager/pricing/

Imran
la source
Vous ne pouvez pas utiliser de certificat d'exportation avec ACM PCA - mais vous n'en avez pas besoin non plus: vous aurez déjà la clé privée et get-certificate vous donne le certificat et la chaîne.
Gratuit Willaert le
@FreeWillaert Je suis presque sûr que vous n'obtiendrez pas de partie clé privée avec get-certificate. consultez cette documentation CLI . et ça . Vérifiez les deux sorties des réponses cli. J'ai déjà testé ces commandes CLI.
Imran
@FreeWillaert ouais :). La commande CLI ci-dessus peut être utilisée dans le script de démarrage Docker ou le script de données utilisateur EC2 pour télécharger le certificat de clé privée au moment de l'exécution et commencer à les utiliser pour servir le trafic TLS. Spécialement en ASG. La bonne partie est que vous pouvez contrôler qui peut appeler la commande CLI ci-dessus en utilisant des rôles IAM afin que tout le monde n'ait pas accès aux clés privées.
Imran
1
@Imran, vous devriez écrire en gras One downside with this is, private CA is expensive AWS service($400/month).en haut car par exemple, je le manquerais si je ne lisais pas cette réponse 2ème fois
Piekarski D
@PiekarskiD terminé. Merci pour la suggestion!!. si vous aimez ma réponse, vous pouvez toujours voter pour vous !!.
Imran le
0

En ajoutant aux commentaires ci-dessus, vous ne pouvez pas utiliser AWS Certificate Manager pour cela, mais vous pouvez ajouter un certificat Let's Encrypt à ec2 sur un serveur Windows exécutant IIS et c'est assez simple:

  1. Associez une adresse IP élastique à votre instance ec2.

  2. Assurez-vous d'avoir un domaine enregistré. Vous ne pouvez pas utiliser les noms de type ec2----------.us-east-1.compute.amazonaws.com fournis avec votre instance.

  3. Grâce aux paramètres DNS de votre fournisseur de domaine, faites pointer votre domaine vers votre adresse IP Elastic.

  4. Connectez-vous à votre instance ec2 et ajoutez votre nom de domaine aux liaisons de site.

  5. Allez sur https://github.com/PKISharp/win-acme/releases

  6. Regardez sous les actifs et utilisez la dernière version (win-acme.v2.0.10.444.zip par exemple). C'est le seul dossier d'actifs dont vous avez besoin.

  7. Décompressez le dossier, ouvrez le terminal en tant qu'administrateur et cd dans le dossier décompressé.

  8. Exécutez wacs.exe et suivez les invites.

  9. Assurez-vous que le groupe de sécurité attribué à votre instance autorise le trafic (au moins votre propre adresse IP) via le port HTTPS que vous avez choisi dans IIS; c'est le port 443 par défaut.

J'ai trouvé les liens ci-dessous utiles lorsque j'ai compris cela. Voici une vidéo utilisant une version antérieure si vous avez besoin de plus d'aide, mais c'est la même idée.

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

Cet article peut également être utile:

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

Monsieur J
la source