Configuración del balanceador de carga del entorno de Elastic Beanstalk para terminar conexiones HTTPS
Si desea actualizar el entorno de AWS Elastic Beanstalk para utilizar HTTPS, debe configurar un agente de escucha HTTPS para el balanceador de carga del entorno. Dos tipos de balanceadores de carga admiten un agente de escucha HTTPS: el balanceador de carga clásico y el balanceador de carga de aplicaciones.
Puede utilizar la consola de Elastic Beanstalk o un archivo de configuración para configurar un agente de escucha seguro y asignar el certificado.
Los entornos de una sola instancia no tienen balanceador de carga ni admiten la terminación HTTPS en el balanceador de carga.
Configuración de un agente de escucha seguro mediante la consola de Elastic Beanstalk
Para asignar un certificado al balanceador de carga del entorno
-
Abra la consola de Elastic Beanstalk
y, en la lista Regions (Regiones), seleccione su región de AWS. -
En el panel de navegación, elija Environments (Entornos) y, a continuación, elija el nombre del entorno en la lista.
nota Si tiene muchos entornos, utilice la barra de búsqueda para filtrar la lista de entornos.
-
En el panel de navegación, elija Configuration (Configuración).
-
En la categoría de configuración Load balancer (Balanceador de carga), elija Edit (Editar).
nota Si la categoría de configuración Load balancer (Balanceador de carga) no tiene un botón Edit (Editar), el entorno no tiene un balanceador de carga.
-
En la página Modify load balancer (Modificar balanceador de carga), el procedimiento varía en función del tipo de balanceador de carga asociado al entorno.
-
Classic Load Balancer
-
Elija Add listener (Añadir agente de escucha).
-
En el cuadro de diálogo Classic Load Balancer listener (Agente de escucha del balanceador de carga clásico), configure las siguientes opciones:
-
En Listener port (Puerto del agente de escucha), escriba el puerto del tráfico entrante, normalmente
443
. -
En Listener protocol (Protocolo del agente de escucha), seleccione HTTPS.
-
En Instance port (Puerto de instancia), escriba
80
. -
En Instance protocol (Protocolo de instancia), elija HTTP.
-
En SSL certificate (Certificado SSL), elija su certificado.
-
-
Elija Add.
-
-
Balanceador de carga de aplicaciones
-
Elija Add listener (Añadir agente de escucha).
-
En el cuadro de diálogo Application Load Balancer listener (Agente de escucha del balanceador de carga de aplicaciones), configure las siguientes opciones:
-
En Port (Puerto), escriba el puerto del tráfico entrante, normalmente
443
. -
En Protocol (Protocolo), seleccione HTTPS.
-
En SSL certificate (Certificado SSL), elija su certificado.
-
-
Elija Add.
nota Para el balanceador de carga clásico y el balanceador de carga de aplicaciones, si el menú desplegable no muestra ningún certificado, debe crear o cargar un certificado para su nombre de dominio personalizado en AWS Certificate Manager (ACM) (preferido). De forma alternativa, cargue un certificado en IAM con la CLI de AWS.
-
-
Balanceador de carga de red
-
Elija Add listener (Añadir agente de escucha).
-
En el cuadro de diálogo Network Load Balancer listener (Agente de escucha del balanceador de carga de red), en Port (Puerto), escriba el puerto del tráfico entrante, normalmente
443
. -
Elija Add (Añadir).
-
-
-
Seleccione Apply.
Configuración de un agente de escucha seguro mediante un archivo de configuración
Puede configurar un agente de escucha seguro en el balanceador de carga con uno de estos archivos de configuración.
ejemplo .ebextensions/securelistener-clb.config
Utilice este ejemplo si su entorno tiene un balanceador de carga clásico. En el ejemplo
se utilizan las opciones del espacio de nombres aws:elb:listener
para configurar un agente de escucha HTTPS en el puerto 443 con el certificado especificado
y para que reenvíe el tráfico descifrado a las instancias del entorno en el puerto
80.
option_settings:
aws:elb:listener:443:
SSLCertificateId: arn:aws:acm:us-east-2:1234567890123:certificate/####################################
ListenerProtocol: HTTPS
InstancePort: 80
Sustituya el texto resaltado por el ARN del certificado. El certificado puede ser uno que haya creado o cargado en AWS Certificate Manager (ACM) (opción preferida) o que haya cargado en IAM con la CLI de AWS.
Para obtener más información acerca de las opciones de configuración del balanceador de carga clásico, consulte Espacios de nombres de la configuración del balanceador de carga clásico.
ejemplo .ebextensions/securelistener-alb.config
Utilice este ejemplo si su entorno tiene un balanceador de carga de aplicaciones.
El ejemplo utiliza las opciones del espacio de nombres aws:elbv2:listener
para configurar un agente de escucha HTTPS en el puerto 443 con el certificado especificado.
El agente de escucha dirige el tráfico al proceso predeterminado.
option_settings:
aws:elbv2:listener:443:
ListenerEnabled: 'true'
Protocol: HTTPS
SSLCertificateArns: arn:aws:acm:us-east-2:1234567890123:certificate/####################################
ejemplo .ebextensions/securelistener-nlb.config
Utilice este ejemplo si su entorno tiene un balanceador de carga de red. El ejemplo
utiliza opciones en el espacio de nombres aws:elbv2:listener
para configurar un agente de escucha en el puerto 443. El agente de escucha dirige
el tráfico al proceso predeterminado.
option_settings:
aws:elbv2:listener:443:
ListenerEnabled: 'true'
Configuración de un grupo de seguridad
Si configura el balanceador de carga para que reenvíe el tráfico a un puerto de la instancia que no sea el 80, debe agregar una regla al grupo de seguridad que permita el tráfico procedente del balanceador de carga en el puerto de la instancia. Si crea el entorno en una VPC personalizada, Elastic Beanstalk agrega esta regla por usted.
Para incorporar esta regla, puede agregar una clave Resources
a un archivo de configuración del directorio .ebextensions
de la aplicación.
El siguiente archivo de configuración de ejemplo agrega una regla de entrada al grupo
de seguridad AWSEBSecurityGroup
. Esto permite el tráfico en el puerto 1000 procedente del grupo de seguridad del
balanceador de carga.
ejemplo .ebextensions/sg-ingressfromlb.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 1000
FromPort: 1000
SourceSecurityGroupName: {"Fn::GetAtt" : ["AWSEBLoadBalancer" , "SourceSecurityGroup.GroupName"]}