Configuration HTTPS dans Amazon EC2

101

Comment activer HTTPS dans Amazon EC2? Notre site fonctionne sur HTTP.

Muhammed Asharaf
la source
bonne question, mais j'ai défini le groupe de sécurité et aucun charme ne se produit
Shark Deng

Réponses:

76

Tout d'abord, vous devez ouvrir le port HTTPS (443). Pour ce faire, allez sur https://console.aws.amazon.com/ec2/ et cliquez sur le Security Groupslien de gauche, puis créez un nouveau groupe de sécurité avec également HTTPS disponible. Ensuite, mettez simplement à jour le groupe de sécurité d'une instance en cours d'exécution ou créez une nouvelle instance à l'aide de ce groupe.

Après ces étapes, votre travail EC2 est terminé, et c'est tout un problème d'application.

Daniele Dellafiore
la source
15
J'ai pu ajouter une nouvelle règle pour le port 443 au groupe de sécurité utilisé par l'instance et il a juste commencé à fonctionner sans même le redémarrer.
Dmitry Efimenko
9
you can't change a security group of a running instance, even rebooting- Je pense que cette limitation a été supprimée depuis que cette réponse a été publiée.
Yuriy Nakonechnyy
11
Vous n'avez pas besoin de changer le groupe de sécurité, vous pouvezEdit inbound rules
Khoi
8
@ nikhil84 en ajoutant HTTPS dans le groupe de sécurité, vous avez uniquement ouvert le port 443 sur la machine qui est l'étape 1. Deuxièmement, vous devez configurer votre serveur sur cette machine pour écouter le port 443 (au lieu du port HTTP par défaut 80) et accepter le trafic HTTPS. Quel serveur utilisez-vous?
Yuriy Nakonechnyy
4
@ nikhil84 veuillez suivre les directives énumérées ici: digitalocean.com/community/tutorials/… pour configurer https sur Apache HTTPD
Yuriy Nakonechnyy
40

Cette réponse s'adresse à quelqu'un qui achète un domaine sur un autre site (en tant que GoDaddy) et qui souhaite utiliser le certificat gratuit Amazon avec Certificate Manager

Cette réponse utilise Amazon Classic Load Balancer (payant) voir le prix avant de l'utiliser


Étape 1 - Demandez un certificat avec Certificate Manager

Accédez à Gestionnaire de certificats> Demander un certificat> Demander un certificat public

Le nom de domaine , vous allez ajouter myprojectdomainname.comet *.myprojectdomainname.comet aller sur Next

Choisissez la validation par e-mail et confirmez et demandez

Ouvrez l'e-mail que vous avez reçu (sur le compte de messagerie que vous avez acheté le domaine) et approuvez la demande

Après cela, vérifiez si l'état de validation de myprojectdomainname.comet *.myprojectdomainname.comest réussi, s'il réussit, vous pouvez passer à l'étape 2

Étape 2 - Créer un groupe de sécurité dans un équilibreur de charge

Sur EC2, allez dans Groupes de sécurité> et créez un groupe de sécurité et ajoutez le http et https entrant

Ce sera quelque chose comme: entrez la description de l'image ici

Étape 3 - Créer l'équilibreur de charge

EC2> Équilibreur de charge> Créer un équilibreur de charge> Équilibreur de charge classique (troisième option)

Créer LB à l'intérieur - le vpc de votre projet On Load Balancer Protocol ajouter Http et Https entrez la description de l'image ici

Suivant> Sélectionnez le groupe de sécurité sortant

Choisissez le groupe de sécurité que vous avez créé à l'étape précédente

Suivant> Choisissez le certificat d'ACM

Sélectionnez le certificat de l'étape 1

Suivant >

lors du contrôle de santé, j'ai utilisé le chemin ping / (une barre oblique au lieu de /index.html)

Étape 4 - Associez votre instance au groupe de sécurité de l'équilibreur de charge

EC2> Instances> cliquez sur votre projet> Actions> Mise en réseau> Modifier les groupes de sécurité

Ajouter le groupe de sécurité de votre équilibreur de charge

Étape 5

EC2> Load Balancer> Cliquez sur l'équilibreur de charge que vous avez créé> copiez le nom DNS (A Record), ce sera quelque chose comme myproject-2021611191.us-east-1.elb.amazonaws.com

Allez dans Route 53> Routes Zones> cliquez sur le nom du domaine> Allez dans Records Sets (Si vous n'avez pas votre domaine ici, créez une zone hébergée avec Domain Name: myprojectdomainname.comet Type: Public Hosted Zone)

Vérifiez si vous avez un enregistrement de type A (probablement pas), créez / modifiez un jeu d'enregistrements avec un nom vide, un type A, un alias Oui et ciblez les DNS que vous avez copiés

Créez également un nouvel ensemble d'enregistrements de type A , nom *.myprojectdomainname.com, alias Oui et ciblez votre domaine (myprojectdomainname.com). Cela rendra possible l'accès à votre site avec www.myprojectdomainname.com et subsite.myprojectdomainname.com. Remarque: vous devrez configurer votre proxy inverse (Nginx / Apache) pour ce faire.

Sur NS, copiez les 4 valeurs de serveurs de noms à utiliser à l'étape suivante, ce sera quelque chose comme:

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

Accédez à EC2> Instances> Et copiez également l'adresse IP publique IPv4

Étape 6

Sur le site d'enregistrement de domaine où vous avez acheté le domaine (dans mon cas GoDaddy)

Modifiez le routage vers http : <Your IPv4 Public IP Number>et sélectionnez Transférer avec masquage

Remplacez les serveurs de noms (NS) par les 4 NS que vous avez copiés, cela peut prendre 48 heures pour faire effet

DigaoParceiro
la source
Dois-je utiliser un équilibreur de charge si je veux https?
Curtis
J'ai fait tout cela, mais j'obtiens ERR_CONNECTION_TIMED_OUT lorsque j'accède à mon domaine dans un navigateur
Curtis
1
J'avais besoin de créer un équilibreur de charge avec un nouveau groupe cible sur le port 80, puis de modifier les écouteurs pour utiliser le port 80. Fonctionne maintenant. Merci.
Curtis
1
@Curtis Load balancer n'est pas la seule option à utiliser https, vous pouvez également configurer "permet de chiffrer" dans votre EC2
DigaoParceiro
@DigaoParceiro qu'avez-vous fait avec l'étape 5. copié le nom DNS?
Prashant
9

Les instances Amazon EC2 ne sont que des machines virtuelles, vous devez donc configurer SSL de la même manière que vous le feriez sur n'importe quel serveur.

Vous ne mentionnez pas la plateforme sur laquelle vous vous trouvez, il est donc difficile de donner plus d'informations.

Geoff Appleford
la source
Bonjour - J'exécute une instance T2.Micro Amazon Linux EC2. J'utilise node.js pour soutenir le serveur. J'écoute le port 443 dans mon script de serveur et mon groupe de sécurité est configuré pour le port 443. Que dois-je faire d'autre pour activer HTTPS? J'ai besoin d'un certificat, non? Avoir du mal à trouver des informations décentes sur ce faire qui ne sont PAS basées sur Elastic Beanstalk.
Stephen Tetreault
2
@SMT - jetez un œil à letsencrypt.org pour obtenir des certificats gratuits et à renouvellement automatique. Il y a beaucoup d'informations (via google) sur la façon de le configurer à l'aide de node. Il n'y a rien d'autre spécifique à AWS / EC2 que vous devez faire.
Geoff Appleford
2
Merci pour la réponse! En fait, je l'ai fait fonctionner l'autre jour et j'ai simplifié certaines étapes. Si quelqu'un lit ceci du futur: github.com/MSCHF/aws-ec2-node-npm-setup
Stephen Tetreault
5

Une vieille question mais qui vaut la peine de mentionner une autre option dans les réponses. Si le système DNS de votre domaine a été défini dans Amazon Route 53, vous pouvez utiliser le service Amazon CloudFront devant votre EC2 et y attacher un certificat SSL Amazon gratuit. De cette façon, vous bénéficierez à la fois d'un CDN pour une livraison de contenu plus rapide et de la sécurisation de votre domaine avec le protocole HTTPS.

Bonjour W
la source
Existe-t-il une référence ou un blog où les étapes sont mentionnées pour y parvenir?
Saurabh Yadav
dans cette vidéo, atiqur rahman obtient un certificat SSL à l'aide du gestionnaire de certificats amazon, puis il configure le cloud front avec l'instance EC2. Après la configuration, http / 2 est automatiquement activé.
Sachithra Dilshan le
2

Utilisez Elastic Load Balacing , il prend en charge la terminaison SSL au niveau de l'équilibreur de charge, y compris le déchargement du décryptage SSL des instances d'application et la gestion centralisée des certificats SSL.

Peter Hulsen
la source
15
Vous n'utilisez pas ELB simplement pour fournir SSL, c'est en fait une réponse assez trompeuse. Votre serveur doit malgré tout fournir SSL, donc l'ajout d'un équilibreur de charge n'est qu'un coût supplémentaire si vous n'en avez pas besoin. Il s'agit également d'une terminaison SSL dans le logiciel, de sorte que le SSL entre l'équilibreur de charge et les serveurs est une étape supplémentaire, affectant les performances.
Thomas the Tank Engine
1
Je suis d'accord avec votre commentaire. Cela ajoutera des coûts supplémentaires et affectera les performances. Nous ne connaissons pas leurs exigences exactes en ce qui concerne la charge sur leurs serveurs, donc c'est peut-être encore un chemin à parcourir. Mais je ne comprends pas votre remarque "Votre serveur a besoin de fournir le SSL malgré tout", pourquoi est-ce nécessaire? L'équilibreur de charge inclut également le déchargement de SSL. Merci.
Peter Hulsen
2
Oui c'est vrai. Vous pouvez l'utiliser pour fournir le SSL de manière simple. Je pense simplement que les instances ont toujours des valeurs DNS publiques auxquelles les utilisateurs peuvent y accéder directement pour une raison quelconque. Si cela se produisait, il se pourrait que vous souhaitiez également le forcer à utiliser SSL.
Thomas the Tank Engine
Je sais que ce commentaire est en retard, mais d'après ce que je comprends, si vous souhaitez utiliser un nom de domaine enregistré, vous devez utiliser ELB, car l'IP EC2 est considérée comme `` non permanente '' et ne peut donc pas utiliser votre certificat SSL. D'un autre côté, si vous utilisez simplement le DNS fourni par Amazon, alors peut-être qu'il n'a pas besoin d'ELB, je n'ai pas vérifié.
hexicle
2

Vous pouvez également utiliser Amazon API Gateway . Placez votre application derrière API Gateway. Veuillez consulter cette FAQ

Bhushan
la source
0

L'une des meilleures ressources que j'ai trouvées était d'utiliser Let's encrypt, vous n'avez pas besoin d'ELB ni de cloudfront pour que votre instance EC2 ait HTTPS, suivez simplement les instructions simples suivantes: chiffrons Connectez-vous à votre serveur et suivez les étapes du lien.

Il est également important, comme mentionné par d'autres, que vous ayez le port 443 ouvert en modifiant vos groupes de sécurité

Vous pouvez afficher votre certificat ou tout autre site Web en modifiant le nom du site dans ce lien

N'oubliez pas qu'il n'est valable que 90 jours

Mustafa
la source