Comment puis-je configurer le protocole HTTPS pour mon environnement Elastic Beanstalk ?
Je souhaite configurer le protocole HTTPS pour mon environnement AWS Elastic Beanstalk afin de chiffrer les données de mon équilibreur de charge vers mon instance Amazon Elastic Compute Cloud (Amazon EC2).
Brève description
Si vous avez configuré un nom de domaine personnalisé pour votre environnement Elastic Beanstalk, vous pouvez utiliser le protocole HTTPS pour permettre aux utilisateurs de se connecter en toute sécurité à votre site Web. Si vous n'avez pas de nom de domaine, vous pouvez utiliser le protocole HTTPS avec un certificat autosigné à des fins de développement et de test.
Pour les environnements à instance unique, vous devez créer la clé privée et le certificat en local. Chargez ensuite le certificat Gestion des identités et des accès AWS (AWS IAM).
Il est recommandé d'utiliser AWS Certificate Manager (ACM) pour provisionner, gérer et déployer vos certificats de serveur par programmation. Vous pouvez également utiliser l'interface de la ligne de commande AWS (AWS CLI) pour charger un certificat tiers ou autosigné et une clé privée dans IAM. Si ACM n'est pas disponible dans votre région AWS, utilisez l'interface AWS CLI.
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), reportez-vous à Résolution des erreurs liées à AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'interface AWS CLI.
Résolution
Préparer votre environnement Elastic Beanstalk
- Pour pouvoir acheminer le trafic vers votre environnement Elastic Beanstalk, vous devez utiliser Amazon Route 53 pour enregistrer un nouveau domaine ou un autre fournisseur de domaine.
- Si l'URL de votre environnement inclut une région, créez un nom d'alias. Si l'URL de votre environnement n'inclut pas de région, créez un enregistrement CNAME.
Important : vous pouvez utiliser des enregistrements CNAME pour des environnements créés avant 2016. Vous ne pouvez pas utiliser un enregistrement CNAME avec un domaine de zone apex, également connu sous le nom de domaine racine ou domaine nu. Pour en savoir plus, reportez-vous à Choix entre des enregistrements avec ou sans alias. - Créez un certificat dans ACM ou chargez un certificat tiers ou autosigné et une clé privée dans IAM.
Ajouter des écouteurs à vos équilibreurs de charge
- Ouvrez la console Elastic Beanstalk, puis choisissez votre environnement.
- Dans le volet de navigation, choisissez Configuration.
- Dans la catégorie Équilibreur de charge, choisissez Modifier.
- Pour ajouter l'écouteur pour le port 443, suivez les instructions relatives à l'équilibreur de charge qui se trouve dans votre environnement Elastic Beanstalk.
Classic Load Balancer
Procédez comme suit :
- Choisissez Ajouter un écouteur.
- Dans le champ Port, saisissez le port du trafic entrant, généralement 443.
- Dans le champ Protocole, sélectionnez HTTPS.
- Dans le champ Port de l'instance, saisissez 80.
- Dans le champ Protocole de l'instance, choisissez HTTP.
- Dans le champ Certificat SSL, choisissez votre certificat, puis choisissez la Stratégie SSL dans la liste déroulante.
- Choisissez Ajouter, puis Appliquer.
Application Load Balancer
Procédez comme suit :
- Choisissez Ajouter un écouteur.
- Dans le champ Port, saisissez le port du trafic entrant, généralement 443.
- Dans le champ Protocole, sélectionnez HTTPS.
- Dans le champ Certificat SSL, choisissez votre certificat, puis choisissez la Stratégie SSL dans la liste déroulante.
- Choisissez Ajouter, puis Appliquer.
Network Load Balancer
Procédez comme suit :
- Choisissez Ajouter un écouteur.
- Dans le champ Port, saisissez le port du trafic entrant, généralement 443.
- Choisissez Ajouter, puis Appliquer.
Configurer vos instances pour mettre fin aux connexions HTTPS
Pour configurer vos instances afin de mettre fin aux connexions HTTPS, utilisez les fichiers de configuration pour modifier le logiciel qui s'exécute sur les instances. Utilisez également les fichiers de configuration pour modifier les groupes de sécurité afin qu'ils autorisent des connexions sécurisées.
Important : si vous utilisez un environnement à instance unique, ignorez les instructions suivantes. Suivez les étapes indiquées dans la section Mettre fin au protocole HTTPS sur l'instance (HTTPS de bout en bout) dans un environnement à instance unique.
-
Ajoutez un écouteur sécurisé à votre équilibreur de charge. Utilisez l'un des fichiers de configuration suivants en fonction du type d'équilibreur de charge qui se trouve dans votre environnement Elastic Beanstalk.
Pour un Classic Load Balancer, utilisez le fichier .ebextensions/https-reencrypt-clb.config :
option_settings: aws:elb:listener:443: InstancePort: 443 InstanceProtocol: HTTPS aws:elasticbeanstalk:application: Application Healthcheck URL: HTTPS:443/
Pour un Application Load Balancer, utilisez le fichier .ebextensions/https-reencrypt-alb.config :
option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' Protocol: HTTPS aws:elasticbeanstalk:environment:process:https: Port: '443' Protocol: HTTPS
Pour un Network Load Balancer, utilisez le fichier .ebextensions/https-reencrypt-nlb.config :
option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' aws:elasticbeanstalk:environment:process:https:
-
Mettez à jour l'équilibreur de charge pour recevoir le trafic sur le port 443.
Vous pouvez créer un nouveau groupe de sécurité, puis demander à Elastic Beanstalk de l'utiliser pour recevoir du trafic sur le port 443. Par exemple, le fichier .ebextensions/https-lbsecuritygroup.config ci-dessous permet de créer un groupe de sécurité et de l'associer à l'équilibreur de charge :
option_settings: # Use the custom security group for the load balancer aws:elb:loadbalancer: SecurityGroups: '`{ "Ref" : "loadbalancersg" }`' ManagedSecurityGroup: '`{ "Ref" : "loadbalancersg" }`' Resources: loadbalancersg: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: load balancer security group VpcId: vpc-####### SecurityGroupIngress: - IpProtocol: tcp FromPort: 443 ToPort: 443 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 SecurityGroupEgress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0
Remarque : remplacez VpcId par la valeur correspondant à votre environnement.
L'exemple précédent inclut les entrées et sorties via le port 80 pour autoriser les connexions HTTPS. Pour autoriser uniquement les connexions sécurisées, supprimez la configuration du port 80 dans la section SecurityGroupIngress.
-
Ajoutez des règles d'entrée et de sortie qui autorisent la communication via le port 443 entre le groupe de sécurité de l'équilibreur de charge et le groupe de sécurité des instances.
Par exemple, utilisez le fichier .ebextensions/https-backendsecurity.config suivant :
Resources: # Add 443-inbound to instance security group (AWSEBSecurityGroup) httpsFromLoadBalancerSG: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 443 FromPort: 443 SourceSecurityGroupId: {"Fn::GetAtt" : ["loadbalancersg", "GroupId"]} # Add 443-outbound to load balancer security group (loadbalancersg) httpsToBackendInstances: Type: AWS::EC2::SecurityGroupEgress Properties: GroupId: {"Fn::GetAtt" : ["loadbalancersg", "GroupId"]} IpProtocol: tcp ToPort: 443 FromPort: 443 DestinationSecurityGroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
L'équilibreur de charge utilise désormais le protocole HTTPS pour se connecter en toute sécurité à vos instances principales. L'équilibreur de charge accepte n'importe quel certificat provenant de l'instance, tel qu'un certificat autosigné ou un certificat émis par une autorité de certification de confiance.
Remarque : vous pouvez ajouter des stratégies à l'équilibreur de charge afin de lui indiquer de ne faire confiance qu'à un certificat spécifique. Par exemple, le fichier .ebextensions/https-backendauth.config suivant permet de créer deux stratégies. L'une des stratégies spécifie un certificat public, tandis que l'autre indique à l'équilibreur de charge que seul le certificat public doit être approuvé pour les connexions au port 443.
option_settings: # Backend Encryption Policy aws:elb:policies:backendencryption: PublicKeyPolicyNames: backendkey InstancePorts: 443 # Public Key Policy aws:elb:policies:backendkey: PublicKey: | -----BEGIN CERTIFICATE----- ################################################################ ################################################################ ################################################################ ################################################################ ################################################ -----END CERTIFICATE-----
-
Configurez le serveur proxy qui s'exécute sur l'instance pour mettre fin au protocole HTTPS.
Remarque : la configuration varie en fonction de votre pile de solutions. Les .ebextensions de n'importe quelle pile de solutions codent en dur la valeur de la clé privée et du certificat de serveur dans les .ebextensions. Pour sécuriser davantage ces fichiers, vous pouvez charger leurs contenus dans Amazon Simple Storage Service (Amazon S3) et utiliser S3Auth pour les transférer vers Amazon EC2.
-
Pour déployer des fichiers de configuration dans votre environnement, ajoutez-les au répertoire .ebextensions qui se trouve à la racine de votre ensemble d'applications. Déployez ensuite le code source qui inclut les fichiers de configuration.
Mettre fin au protocole HTTPS sur l'instance (HTTPS de bout en bout) dans un environnement à instance unique
-
Autorisez le trafic entrant sur le port 443 vers l'instance sur laquelle s'exécute votre application Elastic Beanstalk.
L'exemple suivant utilise les .ebextensions pour autoriser le trafic entrant sur le port 443 :
Resources: sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 443 FromPort: 443 CidrIp: 0.0.0.0/0
-
Configurez le serveur proxy qui s'exécute sur l'instance pour mettre fin au protocole HTTPS.
Remarque : la configuration varie en fonction de votre pile de solutions. Les .ebextensions de n'importe quelle pile de solutions codent en dur la valeur de la clé privée et du certificat de serveur dans les .ebextensions. Pour sécuriser davantage ces fichiers, vous pouvez charger leurs contenus dans Amazon S3 et utiliser S3Auth pour les transférer vers Amazon EC2.
-
Pour déployer des fichiers de configuration dans votre environnement, ajoutez-les au répertoire .ebextensions qui se trouve à la racine de votre ensemble d'applications. Déployez ensuite le code source qui inclut les fichiers de configuration.
Vidéos associées
Contenus pertinents
- demandé il y a 7 moislg...
- demandé il y a 23 jourslg...
- demandé il y a 2 anslg...
- demandé il y a 8 moislg...
- demandé il y a 8 moislg...
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 3 mois
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 10 mois