Terminación de HTTPS en instancias EC2 que ejecutan Node.js - AWS Elastic Beanstalk

Terminación de HTTPS en instancias EC2 que ejecutan Node.js

El siguiente archivo de configuración de ejemplo amplía la configuración de nginx predeterminada para estar a la escucha en el puerto 443 y terminar las conexiones SSL/TLS con un certificado público y una clave privada.

Si configuró el entorno para informes de estado mejorados, necesita configurar nginx para generar los registros de acceso. Para ello, quite el comentario del bloque de líneas debajo del comentario que # For enhanced health... quitando los caracteres # del principio.

ejemplo .ebextensions/https-instance.config

files: /etc/nginx/conf.d/https.conf: mode: "000644" owner: root group: root content: | # HTTPS server server { listen 443; server_name localhost; ssl on; ssl_certificate /etc/pki/tls/certs/server.crt; ssl_certificate_key /etc/pki/tls/certs/server.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; # For enhanced health reporting support, uncomment this block: #if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") { # set $year $1; # set $month $2; # set $day $3; # set $hour $4; #} #access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd; #access_log /var/log/nginx/access.log main; location / { proxy_pass http://nodejs; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } } /etc/pki/tls/certs/server.crt: mode: "000400" owner: root group: root content: | -----BEGIN CERTIFICATE----- certificate file contents -----END CERTIFICATE----- /etc/pki/tls/certs/server.key: mode: "000400" owner: root group: root content: | -----BEGIN RSA PRIVATE KEY----- private key contents # See note below. -----END RSA PRIVATE KEY-----

La clave files crea los siguientes archivos en la instancia:

/etc/nginx/conf.d/https.conf

Configura el servidor de nginx. Este archivo se carga cuando se inicia el servicio de nginx.

/etc/pki/tls/certs/server.crt

Crea el archivo de certificado en la instancia. Sustituya certificate file contents por el contenido del certificado.

nota

YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el contenido en el archivo de configuración de ejemplo y asegúrese de que el editor de texto utiliza espacios para la sangría, no tabuladores.

Si tiene certificados intermedios, inclúyalos en server.crt después del certificado del sitio.

-----BEGIN CERTIFICATE----- certificate file contents -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- first intermediate certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- second intermediate certificate -----END CERTIFICATE-----
/etc/pki/tls/certs/server.key

Crea el archivo de clave privada en la instancia. Sustituya private key contents por el contenido de la clave privada usada para crear la solicitud del certificado o el certificado autofirmado.

nota

Evite confirmar un archivo de configuración que contenga su clave privada en el control de código fuente. Una vez comprobada la configuración y confirmado su funcionamiento, almacene la clave privada en Amazon S3 y modifique la configuración para descargarla durante la implementación. Para obtener instrucciones, consulte Almacenamiento seguro de claves privadas en Amazon S3.

En un entorno de instancia única, también debe modificar el grupo de seguridad de la instancia para permitir el tráfico en el puerto 443. El siguiente archivo de configuración recupera el ID del grupo de seguridad con una función de AWS CloudFormation y le agrega una regla.

ejemplo .ebextensions/https-instance-single.config

Resources: sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 443 FromPort: 443 CidrIp: 0.0.0.0/0

En un entorno de balanceador de carga, el balanceador de carga se configura para el paso a través del tráfico seguro o para descifrar y volver a cifrar en el cifrado integral.