Finalización de HTTPS en EC2 instancias que ejecutan Go - AWS Elastic Beanstalk

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Finalización de HTTPS en EC2 instancias que ejecutan Go

Para los tipos de contenedores Go, habilite HTTPS con un archivo de configuración y un archivo de configuración nginx que configure el servidor nginx para usar HTTPS.

Añada el siguiente fragmento a su archivo de configuración, sustituyendo los marcadores de posición de certificado y clave privada tal como se indica, y guarde el archivo en el directorio .ebextensions del paquete de código fuente. El archivo de configuración realiza las siguientes tareas:

  • La clave Resources habilita el puerto 443 en el grupo de seguridad utilizado por la instancia del entorno.

  • La clave files crea los siguientes archivos en la instancia:

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

    Crea el archivo de certificado en la instancia. certificate file contentsSustitúyalo por el contenido de tu 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. private key contentsSustitúyalo por el contenido de la clave privada utilizada para crear la solicitud de certificado o el certificado autofirmado.

  • La clave container_commands reinicia el servidor nginx una vez que está todo configurado para que el servidor cargue el archivo de configuración de nginx.

ejemplo .ebextensions/https-instance.config
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 # See note below. -----END RSA PRIVATE KEY----- container_commands: 01restart_nginx: command: "service nginx restart"
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.

Incluya lo siguiente en un archivo con la extensión .conf en el directorio .ebextensions/nginx/conf.d/ del paquete de código fuente (por ejemplo, .ebextensions/nginx/conf.d/https.conf). app_portSustitúyalo por el número de puerto en el que escucha la aplicación. Este ejemplo configura el servidor nginx para ponerlo a la escucha en el puerto 443 usando SSL. Para obtener más información acerca de estos archivos de configuración en la plataforma Go, consulte Configuración del servidor proxy.

ejemplo . ebextensions/nginx/conf.d/https.conf
# 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; location / { proxy_pass http://localhost:app_port; 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; } }

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 mediante una AWS CloudFormation función y le añade una regla.

ejemplo .ebextensions/ .config https-instance-single
Resources: sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 443 FromPort: 443 CidrIp: 0.0.0.0/0

Para un entorno con equilibrio de carga, se configura el equilibrador de carga para que el tráfico seguro pase intacto o para que lo descifre y vuelva a cifrar para cifrarlo. end-to-end