Come faccio a configurare HTTPS per il mio ambiente Elastic Beanstalk?
Desidero configurare HTTPS per il mio ambiente AWS Elastic Beanstalk in modo da poter crittografare i dati dal mio sistema di bilanciamento del carico alla mia istanza Amazon Elastic Compute Cloud (Amazon EC2).
Breve descrizione
Se hai configurato un nome di dominio personalizzato per il tuo ambiente Elastic Beanstalk, puoi utilizzare HTTPS per consentire agli utenti di connettersi al tuo sito web in modo sicuro. Se non possiedi un nome di dominio, puoi comunque utilizzare HTTPS con un certificato autofirmato per scopi di test e sviluppo.
Per gli ambienti a istanza singola è necessario creare localmente la chiave privata e il certificato. Quindi, carica il certificato su AWS Identity and Access Management (IAM).
È consigliabile utilizzare Gestione certificati AWS (ACM) per fornire, gestire e distribuire in modo programmatico i certificati del server. Puoi anche utilizzare l'interfaccia della linea di comando AWS (AWS CLI) per caricare un certificato di terze parti o autofirmato e una chiave privata su IAM. Se ACM non è disponibile nella tua Regione AWS, utilizza l'interfaccia AWS CLI.
Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Risolvere gli errori AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Risoluzione
Prepara il tuo ambiente Elastic Beanstalk
- Per indirizzare il traffico verso il tuo ambiente Elastic Beanstalk, usa Amazon Route 53 per registrare un nuovo dominio oppure usa un altro provider di dominio.
- Se l'URL del tuo ambiente include una regione, crea un nome alias. Se, invece, l'URL del tuo ambiente non include una regione, crea un record CNAME.
Importante: è possibile utilizzare i record CNAME per ambienti creati prima del 2016. Non puoi usare un record CNAME con un dominio apex di zona (anche noto come dominio root o dominio nudo). Per ulteriori informazioni, consulta la sezione Scelta tra record alias e non alias. - Crea un certificato in ACM oppure carica un certificato di terze parti o autofirmato e una chiave privata su IAM.
Aggiungi ascoltatori ai sistemi di bilanciamento del carico
- Apri la console Elastic Beanstalk, quindi seleziona il tuo ambiente.
- Nel pannello di navigazione, scegli Configurazione.
- Nella categoria Sistema di bilanciamento del carico, scegli Modifica.
- Per aggiungere l'ascoltatore per la porta 443, completa i passaggi per il sistema di bilanciamento del carico presente nell'ambiente Elastic Beanstalk.
Classic Load Balancer
Completa i seguenti passaggi:
- Scegli Aggiungi listener.
- In Porta, inserisci la porta del traffico in entrata (in genere 443).
- In Protocollo, seleziona HTTPS.
- In Porta dell'istanza, inserisci 80.
- In Protocollo dell'istanza, scegli HTTP.
- In Certificato SSL, scegli il tuo certificato, quindi scegli la policy SSL dal menu a tendina.
- Scegli Aggiungi, quindi scegli Applica.
Application Load Balancer
Completa i seguenti passaggi:
- Scegli Aggiungi listener.
- In Porta, inserisci la porta del traffico in entrata (in genere 443).
- In Protocollo, scegli HTTPS.
- In Certificato SSL, scegli il tuo certificato, quindi scegli la policy SSL dal menu a discesa.
- Scegli Aggiungi, quindi scegli Applica.
Network Load Balancer
Completa i seguenti passaggi:
- Scegli Aggiungi listener.
- In Porta, inserisci la porta del traffico in entrata (in genere 443).
- Scegli Aggiungi, quindi scegli Applica.
Configura le tue istanze per interrompere le connessioni HTTPS
Per configurare le istanze in modo da interrompere le connessioni HTTPS, bisogna utilizzare i file di configurazione per modificare il software in esecuzione sulle istanze. È inoltre necessario utilizzare i file di configurazione per modificare i gruppi di sicurezza in modo che consentano connessioni sicure.
Importante: se utilizzi un ambiente a istanza singola, salta i passaggi seguenti. Completa i passaggi indicati nella sezione Terminare HTTPS sull'istanza (HTTPS end-to-end) in un ambiente a istanza singola.
-
Aggiungi un ascoltatore sicuro al tuo sistema di bilanciamento del carico. Utilizza uno dei seguenti file di configurazione in base al tipo di sistema di bilanciamento del carico presente nel tuo ambiente Elastic Beanstalk.
Per un Classic Load Balancer, utilizza il file .ebextensions/https-reencrypt-clb.config:
option_settings: aws:elb:listener:443: InstancePort: 443 InstanceProtocol: HTTPS aws:elasticbeanstalk:application: Application Healthcheck URL: HTTPS:443/
Per un Application Load Balancer, utilizza il file .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
Per un Network Load Balancer, utilizza il file .ebextensions/https-reencrypt-nlb.config:
option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' aws:elasticbeanstalk:environment:process:https:
-
Aggiorna il sistema di bilanciamento del carico per ricevere il traffico sulla porta 443.
Puoi creare un nuovo gruppo di sicurezza e quindi fare in modo che Elastic Beanstalk utilizzi quel gruppo di sicurezza per ricevere il traffico sulla porta 443. Ad esempio, il seguente file .ebextensions/https-lbsecuritygroup.config crea un gruppo di sicurezza e lo collega al sistema di bilanciamento del carico:
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
Nota: sostituisci VpcId con il valore per il tuo ambiente.
L'esempio precedente include l'ingresso e l'uscita tramite la porta 80 per consentire le connessioni HTTPS. Per consentire solo connessioni sicure, rimuovi la configurazione per la porta 80 nella sezione SecurityGroupIngress.
-
Aggiungi regole di ingresso e uscita che consentano la comunicazione tramite la porta 443 tra il gruppo di sicurezza del sistema di bilanciamento del carico e il gruppo di sicurezza delle istanze.
Ad esempio, utilizza il seguente file .ebextensions/https-backendsecurity.config:
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"]}
A questo punto il sistema di bilanciamento del carico utilizza HTTPS per connettersi in modo sicuro alle tue istanze di backend. Il sistema di bilanciamento del carico accetta qualsiasi certificato dall'istanza, ad esempio un certificato autofirmato o rilasciato da un'autorità di certificazione attendibile.
Nota: è possibile aggiungere policy al sistema di bilanciamento del carico che gli indichino di considerare attendibile solo un certificato specifico. Ad esempio, il seguente file .ebextensions/https-backendauth.config crea due policy. Una policy specifica un certificato pubblico e l'altra indica al sistema di bilanciamento del carico di considerare attendibile solo quel certificato pubblico per le connessioni alla porta 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-----
-
Configura il server proxy in esecuzione sull'istanza per terminare HTTPS.
Nota: la configurazione varia a seconda dello stack di soluzioni. Il file .ebextensions per qualsiasi stack di soluzioni inserisce il valore della chiave privata e del certificato del server nel file .ebextensions. Per proteggere ulteriormente questi file, puoi caricare i contenuti su Amazon Simple Storage Service (Amazon S3) e trasferirli su Amazon EC2 utilizzando S3Auth.
-
Per distribuire i file di configurazione nel tuo ambiente, aggiungi i file di configurazione a una directory denominata .ebextensions nella radice del pacchetto dell'applicazione. Quindi, distribuisci il codice sorgente che include questi file di configurazione.
Terminare HTTPS sull'istanza (HTTPS end-to-end) in un ambiente a istanza singola
-
Consenti il traffico in entrata sulla porta 443 verso l'istanza su cui è in esecuzione l'applicazione Elastic Beanstalk.
L'esempio seguente utilizza .ebextensions per consentire il traffico in entrata sulla porta 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
-
Configura il server proxy in esecuzione sull'istanza per terminare HTTPS.
Nota: la configurazione varia a seconda dello stack di soluzioni. Il file .ebextensions per qualsiasi stack di soluzioni inserisce il valore della chiave privata e del certificato del server nel file .ebextensions. Per proteggere ulteriormente questi file, puoi caricare i contenuti su Amazon S3 e utilizzare S3Auth per trasferirli su Amazon EC2.
-
Per distribuire i file di configurazione nel tuo ambiente, aggiungi i file di configurazione a una directory denominata .ebextensions nella radice del pacchetto dell'applicazione. Quindi, distribuisci il codice sorgente che include questi file di configurazione.
Video correlati
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata un anno fa