

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.

# Configuración de la terminación HTTPS en la instancia
<a name="https-singleinstance"></a>

Puede utilizar [archivos de configuración](ebextensions.md) para configurar el servidor proxy que pasa el tráfico a la aplicación de forma que termine las conexiones HTTPS. Esto resulta útil si desea utilizar HTTPS con un entorno de una sola instancia o si configura el equilibrador de carga para que transfiera el tráfico sin descifrarlo.

Para habilitar HTTPS, debe permitir que el tráfico entrante del puerto 443 llegue a la EC2 instancia en la que se ejecuta la aplicación de Elastic Beanstalk. Para ello, utilice la `Resources` clave del archivo de configuración para añadir una regla para el puerto 443 a las reglas de entrada del grupo de seguridad del AWSEBSecurity grupo.

El siguiente fragmento de código agrega una regla de entrada al grupo de seguridad `AWSEBSecurityGroup` que abre el puerto 443 a todo el tráfico en un entorno formado por una sola instancia:

**`.ebextensions/https-instance-securitygroup.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 con balanceo de carga de una [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) predeterminada, puede modificar esta política para que solo acepte el tráfico procedente del equilibrador de carga. Consulte [Configuración del end-to-end cifrado en un entorno de Elastic Beanstalk con equilibrio de carga](configuring-https-endtoend.md) para ver un ejemplo.

**Topics**
+ [Terminación de HTTPS en instancias EC2 que ejecutan Docker](https-singleinstance-docker.md)
+ [Finalización de HTTPS en EC2 instancias que ejecutan Go](https-singleinstance-go.md)
+ [Terminación de HTTPS en instancias EC2 que ejecutan Java SE](https-singleinstance-java.md)
+ [Terminación de HTTPS en instancias EC2 que ejecutan Node.js](https-singleinstance-nodejs.md)
+ [Finalización de HTTPS en EC2 instancias que ejecutan PHP](https-singleinstance-php.md)
+ [Terminación de HTTPS en instancias EC2 que ejecutan Python](https-singleinstance-python.md)
+ [Terminación de HTTPS en instancias EC2 que ejecutan Ruby](https-singleinstance-ruby.md)
+ [Terminación de HTTPS en instancias EC2 que ejecutan Tomcat](https-singleinstance-tomcat.md)
+ [Terminación de HTTPS en instancias de Amazon EC2 que ejecutan .NET Core en Linux](https-singleinstance-dotnet-linux.md)
+ [Finalización de HTTPS en EC2 instancias de Amazon que ejecutan.NET](SSLNET.SingleInstance.md)

# Terminación de HTTPS en instancias EC2 que ejecutan Docker
<a name="https-singleinstance-docker"></a>

Para los contenedores Docker, utiliza un [archivo de configuración](ebextensions.md) para habilitar HTTPS.

Añada el siguiente fragmento al archivo de configuración, sustituyendo los marcadores de posición de certificado y las claves privadas 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 `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. *certificate file contents*Sustitúyalo por el contenido de su certificado.  
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 contents*Sustitúyalo por el contenido de la clave privada utilizada para crear la solicitud de certificado o el certificado autofirmado. 

**Example .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;
        
        location / {
          proxy_pass http://docker;
          proxy_http_version 1.1;
          
          proxy_set_header Connection "";
          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-----
```

**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](https-storingprivatekeys.md).

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 CloudFormation [función](ebextensions-functions.md) y le agrega una regla.

**Example .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](https-tcp-passthrough.md).](configuring-https-endtoend.md) end-to-end

# Finalización de HTTPS en EC2 instancias que ejecutan Go
<a name="https-singleinstance-go"></a>

Para los tipos de contenedores Go, habilite HTTPS con un [archivo de configuración](ebextensions.md) 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 contents*Sustitúyalo por el contenido de tu certificado.  
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 contents*Sustitúyalo por el contenido de la clave privada utilizada para crear la solicitud de certificado o el certificado autofirmado. 

**Example .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-----
```

**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](https-storingprivatekeys.md).

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\$1port*Sustitú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](go-nginx.md).

**Example . 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 CloudFormation [función](ebextensions-functions.md) y le añade una regla.

**Example .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](https-tcp-passthrough.md).](configuring-https-endtoend.md) end-to-end

# Terminación de HTTPS en instancias EC2 que ejecutan Java SE
<a name="https-singleinstance-java"></a>

Para los tipos de contenedores Java SE, habilite HTTPS con un [archivo de configuración](ebextensions.md) .ebextensions y un archivo de configuración nginx que configure el servidor nginx para usar HTTPS.

Todas las AL2 plataformas AL2023/admiten una función de configuración de proxy uniforme. Para obtener más información sobre la configuración del servidor proxy en las versiones de su plataforma que ejecutan AL2023/AL2, consulte[Configuración del proxy inverso](platforms-linux-extend.proxy.md). 

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 guárdelo en el directorio `.ebextensions`. El archivo de configuración realiza las siguientes tareas:
+ 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 contents*Sustitúyalo por el contenido de su certificado.  
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 contents*Sustitúyalo por el contenido de la clave privada utilizada para crear la solicitud de certificado o el certificado autofirmado. 

**Example .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-----
```

**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](https-storingprivatekeys.md).

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\$1port*Sustitú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 Java SE, consulte [Configuración del servidor proxy](java-se-nginx.md).

**Example . 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 CloudFormation [función](ebextensions-functions.md) y le añade una regla.

**Example .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](https-tcp-passthrough.md).](configuring-https-endtoend.md) end-to-end

# Terminación de HTTPS en instancias EC2 que ejecutan Node.js
<a name="https-singleinstance-nodejs"></a>

El siguiente archivo de configuración de ejemplo [amplía la configuración de nginx predeterminada](nodejs-platform-proxy.md) para escuchar en el puerto 443 y SSL/TLS finalizar las conexiones con un certificado público y una clave privada.

Si configuró el entorno para [informes de estado mejorados](health-enhanced.md), 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.

**Example .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. *certificate file contents*Sustitúyalo por el contenido de su certificado.  
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 contents*Sustitúyalo por el contenido de la clave privada utilizada para crear la solicitud de 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](https-storingprivatekeys.md).

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 CloudFormation [función](ebextensions-functions.md) y le agrega una regla.

**Example .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](https-tcp-passthrough.md).](configuring-https-endtoend.md) end-to-end

# Finalización de HTTPS en EC2 instancias que ejecutan PHP
<a name="https-singleinstance-php"></a>

Para los tipos de contenedores PHP, usa un [archivo de configuración](ebextensions.md) para habilitar el servidor HTTP Apache para que utilice HTTPS.

Añada el siguiente fragmento al archivo de configuración, sustituyendo los marcadores de posición de certificado y las claves privadas 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 `packages` usa yum para instalar `mod24_ssl`.
+ La clave `files` crea los siguientes archivos en la instancia:  
`/etc/httpd/conf.d/ssl.conf`  
Configura el servidor de Apache. Este archivo se carga cuando se inicia el servicio de Apache.  
`/etc/pki/tls/certs/server.crt`  
Crea el archivo de certificado en la instancia. *certificate file contents*Sustitúyalo por el contenido de tu certificado.  
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 contents*Sustitúyalo por el contenido de la clave privada utilizada para crear la solicitud de certificado o el certificado autofirmado.

**Example .ebextensions/https-instance.config**  

```
packages:
  yum:
    mod24_ssl : []

files:
  /etc/httpd/conf.d/ssl.conf:
    mode: "000644"
    owner: root
    group: root
    content: |
      LoadModule ssl_module modules/mod_ssl.so
      Listen 443
      <VirtualHost *:443>
        <Proxy *>
          Order deny,allow
          Allow from all
        </Proxy>

        SSLEngine             on
        SSLCertificateFile    "/etc/pki/tls/certs/server.crt"
        SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
        SSLCipherSuite        EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
        SSLProtocol           All -SSLv2 -SSLv3
        SSLHonorCipherOrder   On
        SSLSessionTickets     Off
        
        Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
        Header always set X-Frame-Options DENY
        Header always set X-Content-Type-Options nosniff
        
        ProxyPass / http://localhost:80/ retry=0
        ProxyPassReverse / http://localhost:80/
        ProxyPreserveHost on
        RequestHeader set X-Forwarded-Proto "https" early
        
      </VirtualHost>
      
  /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-----
```

**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](https-storingprivatekeys.md).

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 CloudFormation [función](ebextensions-functions.md) y le agrega una regla.

**Example .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](https-tcp-passthrough.md).](configuring-https-endtoend.md) end-to-end

# Terminación de HTTPS en instancias EC2 que ejecutan Python
<a name="https-singleinstance-python"></a>

En los tipos de contenedores de Python que utilizan Apache HTTP Server con Web Server Gateway Interface (WSGI), puede utilizar un [archivo de configuración](ebextensions.md) para permitir que Apache HTTP Server use HTTPS.

Añada el siguiente fragmento al [archivo de configuración](ebextensions.md), sustituyendo los marcadores de posición de certificado y las claves privadas 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 `packages` usa yum para instalar `mod_ssl`.
+ La clave `files` crea los siguientes archivos en la instancia:  
`/etc/httpd/conf.d/ssl.conf`  
Configura el servidor de Apache. Si la aplicación no se llama `application.py`, cambie el texto resaltado en el valor de `WSGIScriptAlias` por la ruta local de la aplicación. Por ejemplo, una aplicación de django podría estar en `django/wsgi.py`. La ubicación debe coincidir con el valor de la opción `WSGIPath` que estableció en el entorno.  
En función de los requisitos de la aplicación, es posible que tenga que agregar también otros directorios al parámetro **python-path**.   
`/etc/pki/tls/certs/server.crt`  
Crea el archivo de certificado en la instancia. *certificate file contents*Sustitúyalo por el contenido de su certificado.  
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 contents*Sustitúyalo por el contenido de la clave privada utilizada para crear la solicitud de certificado o el certificado autofirmado. 
+ La clave `container_commands` detiene el servicio httpd una vez que está todo configurado para que el servicio use el nuevo archivo `https.conf` y certificado.

**nota**  
El ejemplo solo funciona en entornos que utilizan la plataforma [Python](create-deploy-python-container.md).

**Example .ebextensions/https-instance.config**  

```
packages:
  yum:
    mod_ssl: []
    
files:
  /etc/httpd/conf.d/ssl.conf:
    mode: "000644"
    owner: root
    group: root
    content: |
      LoadModule wsgi_module modules/mod_wsgi.so
      WSGIPythonHome /var/app/venv/staging-LQM1lest
      WSGISocketPrefix run/wsgi
      WSGIRestrictEmbedded On
      Listen 443
      <VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile "/etc/pki/tls/certs/server.crt"
        SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
        
        Alias /static/ /var/app/current/static/
        <Directory /var/app/current/static>
        Order allow,deny
        Allow from all
        </Directory>
        
        WSGIScriptAlias / /var/app/current/application.py
        
        <Directory /var/app/current>
        Require all granted
        </Directory>
        
        WSGIDaemonProcess wsgi-ssl processes=1 threads=15 display-name=%{GROUP} \
          python-path=/var/app/current \
          python-home=/var/app/venv/staging-LQM1lest \
          home=/var/app/current \
          user=webapp \
          group=webapp
        WSGIProcessGroup wsgi-ssl
        
      </VirtualHost>
      
  /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-----
      
container_commands:
  01killhttpd:
    command: "killall httpd"
  02waitforhttpddeath:
    command: "sleep 3"
```

**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](https-storingprivatekeys.md).

**Nota para los entornos de Amazon Linux 2023**  
En Amazon Linux 2023, `mod_wsgi` debe instalarse por separado, ya que no está disponible en los repositorios de paquetes. Para obtener instrucciones de instalación, consulte [mod\$1wsgi](https://pypi.org/project/mod-wsgi/) en PyPI.

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 CloudFormation [función](ebextensions-functions.md) y le agrega una regla.

**Example .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](https-tcp-passthrough.md).](configuring-https-endtoend.md) end-to-end

# Terminación de HTTPS en instancias EC2 que ejecutan Ruby
<a name="https-singleinstance-ruby"></a>

En los tipos de contenedores de Ruby, la forma de habilitar HTTPS depende del tipo de servidor de aplicaciones utilizado.

**Topics**
+ [Configuración de HTTPS para Ruby con Puma](#Puma)
+ [Configuración de HTTPS para Ruby con Passenger](#Passenger)

## Configuración de HTTPS para Ruby con Puma
<a name="Puma"></a>

En los tipos de contenedores de Ruby que utilizan Puma como servidor de aplicaciones, debe usar un [archivo de configuración](ebextensions.md) para habilitar el servidor HTTPS.

Añada el siguiente fragmento al archivo de configuración, sustituyendo los marcadores de posición de certificado y las claves privadas 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 `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. *certificate file contents*Sustitúyalo por el contenido de su certificado.  
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 contents*Sustitúyalo por el contenido de la clave privada utilizada para crear la solicitud de certificado o el certificado autofirmado. 

**Example .ebextensions/https-instance.config**  

```
files:
  /etc/nginx/conf.d/https.conf:
    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;
          
          location / {
              proxy_pass  http://my_app;
              proxy_set_header        Host            $host;
              proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header        X-Forwarded-Proto https;
          }

          location /assets {
            alias /var/app/current/public/assets;
            gzip_static on;
            gzip on;
            expires max;
            add_header Cache-Control public;
          }

          location /public {
            alias /var/app/current/public;
            gzip_static on;
            gzip on;
            expires max;
            add_header Cache-Control public;
          }
      }

  /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-----
```

**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](https-storingprivatekeys.md).

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 CloudFormation [función](ebextensions-functions.md) y le agrega una regla.

**Example .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](https-tcp-passthrough.md).](configuring-https-endtoend.md) end-to-end

## Configuración de HTTPS para Ruby con Passenger
<a name="Passenger"></a>

En los tipos de contenedores de Passenger que utilizan Puma como servidor de aplicaciones, debe usar un archivo de configuración y un archivo JSON para habilitar el servidor HTTPS.

**Si desea configurar HTTPS para Ruby con Passenger**

1. Añada el siguiente fragmento al archivo de configuración, sustituyendo los marcadores de posición de certificado y las claves privadas 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 `files` crea los siguientes archivos en la instancia:  
`/etc/pki/tls/certs/server.crt`  
Crea el archivo de certificado en la instancia. Sustitúyalo por el contenido *certificate file contents* de su certificado.  
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 contents*Sustitúyalo por el contenido de la clave privada utilizada para crear la solicitud de certificado o el certificado autofirmado.   
**Example Fragmento de código .ebextensions sobre la configuración de HTTPS para Ruby con Passenger**  

   ```
   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-----
   ```
**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](https-storingprivatekeys.md).

1. Cree un archivo de texto y agregue el siguiente JSON al archivo. Guárdelo en el directorio raíz del paquete de código fuente con el nombre `passenger-standalone.json`. Este archivo JSON configura Passenger para usarlo con HTTPS.
**importante**  
Este archivo JSON no debe contener ninguna marca de orden de bytes (BOM). De lo contrario, la biblioteca JSON de Passenger no leerá el archivo correctamente y no se iniciará el servicio Passenger.  
**Example passenger-standalone.json**  

   ```
   {
     "ssl" : true,
     "ssl_port" : 443,
     "ssl_certificate" : "/etc/pki/tls/certs/server.crt",
     "ssl_certificate_key" : "/etc/pki/tls/certs/server.key"
   }
   ```

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 CloudFormation [función](ebextensions-functions.md) y le agrega una regla.

**Example .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](https-tcp-passthrough.md).](configuring-https-endtoend.md) end-to-end

# Terminación de HTTPS en instancias EC2 que ejecutan Tomcat
<a name="https-singleinstance-tomcat"></a>

Para los tipos de contenedores Tomcat, utilice un [archivo de configuración](ebextensions.md) para habilitar el servidor HTTP Apache para que use HTTPS cuando actúe como proxy inverso para Tomcat.

Añada el siguiente fragmento al archivo de configuración, sustituyendo los marcadores de posición de certificado y las claves privadas 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 `files` crea los siguientes archivos en la instancia:  
`/etc/pki/tls/certs/server.crt`  
Crea el archivo de certificado en la instancia. *certificate file contents*Sustitúyalo por el contenido de su certificado.  
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.  
`/etc/pki/tls/certs/server.key`  
Crea el archivo de clave privada en la instancia. *private key contents*Sustitúyalo por el contenido de la clave privada utilizada para crear la solicitud de certificado o el certificado autofirmado.   
`/opt/elasticbeanstalk/hooks/appdeploy/post/99_start_httpd.sh`  
Crea un script de enlace después de la implementación para reiniciar el servicio httpd.

**Example .ebextensions/https-instance.config**  

```
files:
  /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-----

  /opt/elasticbeanstalk/hooks/appdeploy/post/99_start_httpd.sh:
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      sudo service httpd restart
```

También debe configurar el servidor proxy del entorno para estar a la escucha en el puerto 443. La siguiente configuración de Apache 2.4 agrega un agente de escucha en el puerto 443. Para obtener más información, consulte [Configuración del servidor proxy](java-tomcat-proxy.md).

**Example . ebextensions/httpd/conf.d/ssl.conf**  

```
Listen 443
<VirtualHost *:443> 
  ServerName server-name
  SSLEngine on 
  SSLCertificateFile "/etc/pki/tls/certs/server.crt" 
  SSLCertificateKeyFile "/etc/pki/tls/certs/server.key" 

  <Proxy *> 
    Require all granted 
  </Proxy> 
  ProxyPass / http://localhost:8080/ retry=0 
  ProxyPassReverse / http://localhost:8080/ 
  ProxyPreserveHost on 

  ErrorLog /var/log/httpd/elasticbeanstalk-ssl-error_log 

</VirtualHost>
```

Su proveedor de certificados puede incluir certificados intermedios que puede instalar para mejorar la compatibilidad con los clientes móviles. Configure Apache con un paquete de entidades de certificados intermedios (CA) añadiendo lo siguiente a su archivo de configuración de SSL (consulte [Ampliación y anulación de la configuración predeterminada de Apache: AMI de Amazon Linux () AL1](java-tomcat-proxy.md#java-tomcat-proxy-apache) para conocer la ubicación):
+ En el contenido del archivo `ssl.conf`, especifique el archivo de cadena:

  ```
  SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
  SSLCertificateChainFile "/etc/pki/tls/certs/gd_bundle.crt"
  SSLCipherSuite        EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
  ```
+ Añada una nueva entrada a la clave `files` con el contenido de los certificados intermedios:

  ```
  files:
    /etc/pki/tls/certs/gd_bundle.crt:
      mode: "000400"
      owner: root
      group: root
      content: |
        -----BEGIN CERTIFICATE-----
        First intermediate certificate
        -----END CERTIFICATE-----
        -----BEGIN CERTIFICATE-----
        Second intermediate certificate
        -----END CERTIFICATE-----
  ```

**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](https-storingprivatekeys.md).

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 CloudFormation [función](ebextensions-functions.md) y le añade una regla.

**Example .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](https-tcp-passthrough.md).](configuring-https-endtoend.md) end-to-end

# Terminación de HTTPS en instancias de Amazon EC2 que ejecutan .NET Core en Linux
<a name="https-singleinstance-dotnet-linux"></a>

Para los tipos de contenedores .NET Core en Linux, habilite HTTPS con un [archivo de configuración](ebextensions.md) `.ebextensions` y un archivo de configuración nginx que configura 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 guárdelo en el directorio `.ebextensions`. El archivo de configuración realiza las siguientes tareas:
+ 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 contents*Sustitúyalo por el contenido de su certificado.  
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 contents*Sustitúyalo por el contenido de la clave privada utilizada para crear la solicitud de certificado o el certificado autofirmado. 

**Example .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-----
```

**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](https-storingprivatekeys.md).

Incluya lo siguiente en un archivo con la extensión `.conf` en el directorio `.platform/nginx/conf.d/` del paquete de código fuente (por ejemplo, `.platform/nginx/conf.d/https.conf`). *app\$1port*Sustitú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 .NET Core en Linux, consulte [Configuración del servidor proxy](dotnet-linux-platform-nginx.md).

**Example . platform/nginx/conf.d/https.conf**  

```
# HTTPS server

server {
    listen       443 ssl;
    server_name  localhost;
    
    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 CloudFormation [función](ebextensions-functions.md) y le añade una regla.

**Example .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](https-tcp-passthrough.md).](configuring-https-endtoend.md) end-to-end

# Finalización de HTTPS en EC2 instancias de Amazon que ejecutan.NET
<a name="SSLNET.SingleInstance"></a>

El siguiente [archivo de configuración](ebextensions.md) crea y ejecuta un PowerShell script de Windows que realiza las siguientes tareas:
+ Comprueba si existe un certificado HTTPS vinculado con el puerto 443.
+ Obtiene el [certificado PFX](configuring-https-ssl.md) de un bucket de Amazon S3.
**nota**  
Añade una política `AmazonS3ReadOnlyAccess` a `aws-elasticbeanstalk-ec2-role` para obtener acceso al certificado SSL del bucket de Amazon S3.
+ Obtiene la contraseña de AWS Secrets Manager.
**nota**  
Agregue una declaración en `aws-elasticbeanstalk-ec2-role` que permita la acción de `secretsmanager:GetSecretValue` para el secreto que contiene la contraseña del certificado
+ Instala el certificado.
+ Enlaza el certificado al puerto 443.
**nota**  
Para quitar el punto de conexión HTTP (puerto 80), incluya el comando `Remove-WebBinding` en la sección **Remove the HTTP binding (Quitar la vinculación con HTTP)** del ejemplo.

**Example .ebextensions/ .config https-instance-dotnet**  

```
files:
  "C:\\certs\\install-cert.ps1":
    content: |
      import-module webadministration
      ## Settings - replace the following values with your own
      $bucket = "amzn-s3-demo-bucket"  ## S3 bucket name
      $certkey = "example.com.pfx"    ## S3 object key for your PFX certificate
      $secretname = "example_secret"  ## AWS Secrets Manager name for a secret that contains the certificate's password
      ##

      # Set variables
      $certfile = "C:\cert.pfx"
      $pwd = Get-SECSecretValue -SecretId $secretname | select -expand SecretString

      # Clean up existing binding
      if ( Get-WebBinding "Default Web Site" -Port 443 ) {
        Echo "Removing WebBinding"
        Remove-WebBinding -Name "Default Web Site" -BindingInformation *:443:
      }
      if ( Get-Item -path IIS:\SslBindings\0.0.0.0!443 ) {
        Echo "Deregistering WebBinding from IIS"
        Remove-Item -path IIS:\SslBindings\0.0.0.0!443
      }

      # Download certificate from S3
      Read-S3Object -BucketName $bucket -Key $certkey -File $certfile
      
      # Install certificate
      Echo "Installing cert..."
      $securepwd = ConvertTo-SecureString -String $pwd -Force -AsPlainText
      $cert = Import-PfxCertificate -FilePath $certfile cert:\localMachine\my -Password $securepwd
      
      # Create site binding
      Echo "Creating and registering WebBinding"
      New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https
      New-Item -path IIS:\SslBindings\0.0.0.0!443 -value $cert -Force
      
      ## Remove the HTTP binding
      ## (optional) Uncomment the following line to unbind port 80
      # Remove-WebBinding -Name "Default Web Site" -BindingInformation *:80:
      ##
      
      # Update firewall
      netsh advfirewall firewall add rule name="Open port 443" protocol=TCP localport=443 action=allow dir=OUT

commands:
  00_install_ssl:
    command: powershell -NoProfile -ExecutionPolicy Bypass -file C:\\certs\\install-cert.ps1
```

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 CloudFormation [función y le añade una regla](ebextensions-functions.md).

**Example .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](https-tcp-passthrough.md).](configuring-https-endtoend.md) end-to-end