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 acquistato e 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 sviluppo e test.
Gestione certificati AWS (ACM) è lo strumento consigliato per il provisioning, la gestione e la distribuzione dei certificati dei server a livello di programmazione. Puoi anche usare Interfaccia della linea di comando AWS (AWS CLI). Se ACM non è disponibile nella tua Regione AWS, puoi caricare un certificato di terze parti o autofirmato e una chiave privata su AWS Identity and Access Management (IAM) utilizzando l'interfaccia a riga di comando di AWS.
Nota: se ricevi errori durante l'esecuzione dei comandi AWS Command Line Interface (AWS CLI), assicurati di utilizzare la versione più recente dell'interfaccia a riga di comando di AWS.
Risoluzione
Prepara il tuo ambiente Elastic Beanstalk
1. Per indirizzare il traffico verso il tuo ambiente Elastic Beanstalk, registra un nuovo dominio utilizzando Amazon Route 53 o un altro provider di dominio.
2. Crea un nome alias se l'URL del tuo ambiente include una regione AWS. Oppure, crea un record CNAME se l'URL del tuo ambiente non include una regione AWS.
Importante: è possibile utilizzare i record CNAME per ambienti creati prima del 2016. Non puoi usare un record CNAME con un dominio apex di zona (noto anche come dominio root o dominio nudo). Per ulteriori informazioni, consulta Scelta tra record alias e non alias.
3. Crea un certificato in ACM o carica un certificato e una chiave privata di terze parti o autofirmati su IAM.
Aggiungi listener ai tuoi sistemi di bilanciamento del carico
1. Apri la console Elastic Beanstalk, quindi seleziona il tuo ambiente.
2. Nel riquadro di navigazione, scegli Configurazione.
3. Nella categoria Load balancer, scegli Modifica.
4. Per aggiungere il listener per la porta 443, scegli una delle seguenti serie di passaggi in base al tipo di sistema di bilanciamento del carico nel tuo ambiente Elastic Beanstalk.
Aggiungi un listener per un Classic Load Balancer:
1. Scegli Aggiungi listener.
2. Per Porta, inserisci la porta di traffico in entrata (in genere 443).
3. Per Protocollo, scegli HTTPS.
4. Per Instance Port, inserisci 80.
5. Per Instance Protocol, scegli HTTP.
6. Per il certificato SSL, scegli il tuo certificato, quindi scegli la policy SSL che desideri utilizzare dal menu a tendina.
7. Scegli Aggiungi, quindi scegli Applica.
Aggiungi un listener per un Application Load Balancer:
1. Scegli Aggiungi listener.
2. Per Porta, inserisci la porta di traffico in entrata (in genere 443).
3. Per Protocollo, scegli HTTPS.
4. Per il certificato SSL, scegli il tuo certificato, quindi scegli la policy SSL che desideri utilizzare dal menu a tendina.
5. Scegli Aggiungi, quindi scegli Applica.
Aggiungi un listener per un Network Load Balancer:
1. Scegli Aggiungi listener.
2. Per Porta, inserisci la porta di traffico in entrata (in genere 443).
3. Scegli Aggiungi, quindi scegli Applica.
Configura le tue istanze per terminare le connessioni HTTPS
Per configurare le istanze in modo da interrompere le connessioni HTTPS, è necessario 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 singola istanza, salta i seguenti passaggi. Quindi, completa i passaggi indicati nella sezione Terminare HTTPS sull'istanza (HTTPS end-to-end) in un ambiente a singola istanza.
1. Aggiungi un listener sicuro al tuo sistema di bilanciamento del carico utilizzando uno dei seguenti file di configurazione, in base al tipo di load balancer nel tuo ambiente Elastic Beanstalk.
Per un Load Balancer classico, usa un 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, usa un 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, usa un file .ebextensions/https-reencrypt-nlb.config:
option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' aws:elasticbeanstalk:environment:process:https: Port: '443'
2. 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 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
Nel file di configurazione precedente, sostituisci VpcId con il valore corretto per il tuo ambiente.
Nota: l'esempio precedente include l'ingresso e l'uscita tramite la porta 80 per consentire le connessioni HTTP. Per consentire solo connessioni sicure, rimuovere la configurazione per la porta 80 nella sezione SecurityGroupIngress.
3. 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, puoi utilizzare 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"]}
Ora, il sistema di bilanciamento del carico si connette alle tue istanze di backend in modo sicuro tramite HTTPS. Il sistema di bilanciamento del carico accetta qualsiasi certificato dell'istanza, indipendentemente dal fatto che sia autofirmato o emesso da un'autorità di certificazione attendibile.
Nota: è possibile aggiungere policy al sistema di bilanciamento del carico che indicano al sistema di bilanciamento del carico 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 per le connessioni alla porta di istanza 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-----
4. Configura il server proxy in esecuzione sull'istanza per terminare HTTPS.
Nota: la configurazione varia a seconda dello stack di soluzioni in uso. I file .ebextensions per qualsiasi soluzione inseriscono il valore della chiave privata e del certificato del server nei 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.
5. Per distribuire i file di configurazione nel tuo ambiente, aggiungi i file di configurazione a una directory denominata .ebextensions nella directory principale 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 singola istanza
1. Consenti il traffico in entrata sulla porta 443 all'istanza EC2 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
2. Configura il server proxy in esecuzione sull'istanza per terminare HTTPS.
Nota: la configurazione varia a seconda dello stack di soluzioni in uso. I file .ebextensions per qualsiasi soluzione inseriscono il valore della chiave privata e del certificato del server nei file .ebextensions. Per proteggere ulteriormente questi file, puoi caricare i contenuti su S3 e trasferirli su Amazon EC2 utilizzando S3Auth.
3. Per distribuire i file di configurazione nel tuo ambiente, aggiungi i file di configurazione a una directory denominata .ebextensions nella directory principale del pacchetto dell'applicazione. Quindi, distribuisci il codice sorgente che include questi file di configurazione.
Video correlati

Contenuto pertinente
- AWS UFFICIALEAggiornata 25 giorni fa
- AWS UFFICIALEAggiornata 8 mesi fa
- AWS UFFICIALEAggiornata 8 mesi fa