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 l'ambiente Elastic Beanstalk, utilizza HTTPS per consentire agli utenti di connettersi in modo sicuro al sito web. Se non possiedi un nome di dominio, utilizza HTTPS con un certificato autofirmato per scopi di sviluppo e test.
Per gli ambienti a istanza singola, devi creare localmente la chiave privata e il certificato. Quindi carica il certificato su AWS Identity and Access Management (AWS IAM).
È consigliabile utilizzare bilanciatori del carico con 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 nella Regione AWS ACM non è disponibile, utilizza AWS CLI.
Risoluzione
Prepara l'ambiente Elastic Beanstalk
Per indirizzare il traffico verso l'ambiente Elastic Beanstalk, registra un nuovo dominio con Amazon Route 53 oppure utilizza un altro provider di dominio.
Se l'URL dell'ambiente include una Regione, crea un nome alias. Se invece l'URL dell'ambiente non include una Regione, crea un record CNAME.
Importante: puoi 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 Confronto tra record alias e CNAME.
Quindi crea un certificato in ACM oppure carica un certificato di terze parti o autofirmato e una chiave privata su IAM.
Aggiungi listener ai bilanciatori del carico
Completa i seguenti passaggi:
- Apri la console Elastic Beanstalk.
- Seleziona l'ambiente.
- Nel pannello di navigazione, scegli Configurazione.
- Nella categoria Sistema di bilanciamento del carico, scegli Modifica.
- Per aggiungere il listener per la porta 443, completa i passaggi per il bilanciatore del carico presente nell'ambiente Elastic Beanstalk.
Nota: è consigliabile utilizzare un Application Load Balancer o un Network Load Balancer.
Per un Application Load Balancer
Completa i seguenti passaggi:
- Scegli Aggiungi listener.
- In Porta, inserisci la porta del traffico in entrata. Ad esempio, 443.
- Per Protocollo, scegli HTTPS.
- Per Certificato SSL, scegli il certificato, quindi scegli la policy SSL dal menu a discesa.
- Scegli Aggiungi, quindi scegli Applica.
Per un Network Load Balancer
Completa i seguenti passaggi:
- Scegli Aggiungi listener.
- In Porta, inserisci la porta del traffico in entrata. Ad esempio, 443.
- Scegli Aggiungi, quindi scegli Applica.
Per un Classic Load Balancer
Completa i seguenti passaggi:
- Scegli Aggiungi listener.
- In Porta, inserisci la porta del traffico in entrata. Ad esempio, 443.
- Per Protocollo, scegli HTTPS.
- In Porta dell'istanza, inserisci 80.
- In Protocollo dell'istanza, scegli HTTP.
- Per Certificato SSL, scegli il certificato, quindi scegli la policy SSL dal menu a discesa.
- Scegli Aggiungi, quindi scegli Applica.
Configura le istanze per interrompere le connessioni HTTPS
Per configurare le istanze in modo da interrompere le connessioni HTTPS, utilizza il file di configurazione .ebextensions per modificare il software in esecuzione nelle istanze. Per ulteriori informazioni, consulta Terminazione di HTTPS su EC2 istanze Amazon che eseguono.NET Core su Linux. Inoltre, puoi utilizzare i file di configurazione per modificare i gruppi di sicurezza e consentire connessioni sicure.
Importante: se utilizzi un ambiente a istanza singola, salta i passaggi seguenti. Completa i passaggi nella sezione Arresta HTTPS nell'istanza (HTTPS end-to-end) in un ambiente a istanza singola.
Per configurare le istanze in modo da arrestare le connessioni HTTPS, completa i seguenti passaggi:
-
Aggiungi un listener sicuro al bilanciatore del carico. Utilizza uno dei seguenti file di configurazione in base al tipo di bilanciatore del carico presente nell'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: HTTPSPer 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: Port: '443' -
Aggiorna il bilanciatore del carico per ricevere il traffico sulla porta 443.
Puoi creare un nuovo gruppo di sicurezza e fare in modo che Elastic Beanstalk utilizzi quel gruppo 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/0Nota: sostituisci VpcId con il valore per il tuo ambiente. L'esempio precedente include input e output sulla porta 80 per consentire le connessioni HTTP. Per consentire solo connessioni sicure, rimuovi la configurazione per la porta 80 nella sezione SecurityGroupIngress.
-
Aggiungi regole in ingresso e in uscita che consentano la comunicazione tramite la porta 443 tra il gruppo di sicurezza del bilanciatore 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"]} 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"]} -
Aggiungi il seguente frammento al file di configurazione, quindi salvalo nella directory .ebextensions:
files: /etc/pki/tls/certs/server.crt: content: | -----BEGIN CERTIFICATE----- certificate file contents -----END CERTIFICATE----- /etc/pki/tls/certs/server.key: content: | -----BEGIN RSA PRIVATE KEY----- private key contents -----END RSA PRIVATE KEY-----Nota: sostituisci certificate file contents con il contenuto del file del tuo certificato e private key contents con il contenuto della tua chiave privata.
La configurazione della terminazione di HTTPS 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, carica i contenuti su Amazon Simple Storage Service (Amazon S3), quindi trasferiscili su Amazon EC2 utilizzando S3Auth.
-
Utilizza la chiave files per creare i seguenti file nell'istanza /etc/pki/tls/certs/server.crt.
-
Utilizza il seguente file del certificato per creare il file del certificato nell'istanza:
-----BEGIN CERTIFICATE----- certificate file contents -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- first intermediate certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- second intermediate certificate -----END CERTIFICATE-----Nota: sostituisci certificate file contents con il contenuto del tuo certificato.Se hai certificati intermedi, includili in server.crtdopo il certificato del sito.
-
Utilizza /etc/pki/tls/certs/server.key per creare il file della chiave privata nell'istanza.
Nota: sostituisci private key contents con il contenuto della chiave privata utilizzata per creare la richiesta di certificato o il certificato autofirmato. -
Configura il server proxy in esecuzione nell'istanza per terminare HTTPS. Tutte le piattaforme avviano la configurazione del server proxy in modo uniforme.
-
Aggiungi i file di configurazione a una directory denominata .ebextensions nella root del pacchetto dell'applicazione per distribuire i file di configurazione nell'ambiente.
-
Quindi distribuisci il codice sorgente che include questi file di configurazione.
Arresta HTTPS nell'istanza (HTTPS end-to-end) in un ambiente a istanza singola
Utilizza il file .ebextensions per consentire il traffico in entrata sulla porta 443 verso l'istanza su cui viene eseguita l'applicazione Elastic Beanstalk.
Esempio:
Resources: sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 443 FromPort: 443 CidrIp: 0.0.0.0/0
Quindi configura il server proxy in esecuzione nell'istanza per terminare HTTPS.
Nota: la configurazione della terminazione di HTTPS 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, carica i contenuti su Amazon Simple Storage Service (Amazon S3) e trasferiscili su Amazon EC2 utilizzando S3Auth.
Per distribuire i file di configurazione nell'ambiente, aggiungi i file di configurazione a una directory denominata .ebextensions nella root del pacchetto dell'applicazione. Quindi, distribuisci il codice sorgente che include questi file di configurazione.
- Argomenti
- Compute
- Lingua
- Italiano
Video correlati

