

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.

# Certificados de servidor
<a name="configuring-https.certificate"></a>

En este tema se describen los distintos tipos de certificados que puede utilizar para configurar HTTPS y cuándo aplicar cada uno de ellos. En los subtemas de esta sección se proporcionan instrucciones para crear su propio certificado y cómo cargarlo.

**AWS Certificate Manager (ACM)**  
ACM es la herramienta preferida para aprovisionar, administrar e implementar los certificados de servidor. Puede hacerlo mediante programación o mediante el. AWS CLI Con ACM, puede crear de forma gratuita un certificado de confianza para los nombres de dominio.

 Los certificados ACM solo se pueden usar con balanceadores de AWS carga y CloudFront distribuciones de Amazon, y ACM solo está disponible en determinadas regiones. AWS Para utilizar un certificado de ACM con Elastic Beanstalk, consulte [Configuración de la terminación HTTPS en el equilibrador de carga](configuring-https-elb.md). Para obtener más información acerca de ACM, consulte la [Guía del usuario de *AWS Certificate Manager *](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html). 

**nota**  
 Para obtener una lista de las regiones donde ACM está disponible, consulte [Puntos de conexión y cuotas de ACM](https://docs.aws.amazon.com/general/latest/gr/acm.html) en la *Referencia general de Amazon Web Services*. 

Si el ACM no está disponible en su AWS región, puede cargar un certificado autofirmado o de terceros y una clave privada a (IAM). AWS Identity and Access Management Puede utilizarlos para AWS CLI cargar el certificado. Los certificados almacenados en IAM se pueden usar con distribuciones y CloudFront balanceadores de carga. Para obtener más información, consulte [Carga de un certificado en IAM](configuring-https-ssl-upload.md).

**Certificado de terceros**  
Si ACM no está disponible en su región, puede comprar un certificado de confianza a un tercero. Se puede usar un certificado de terceros para descifrar el tráfico HTTPS en el equilibrador de carga, en las instancias del backend o en ambos.

**Un certificado autofirmado**  
Para el desarrollo y las pruebas, puede [crear y firmar un certificado](configuring-https-ssl.md) usted mismo con herramientas de código abierto. Los certificados autofirmados son gratuitos y fáciles de crear, pero no se pueden usar para el descifrado front-end en sitios públicos. Si intenta usar un certificado autofirmado para una conexión HTTPS con un cliente, el navegador del usuario muestra un mensaje de error que indica que el sitio web no es seguro. No obstante, puede utilizar un certificado autofirmado para proteger las conexiones del backend sin problema.

# Creación de y firmar un certificado X509
<a name="configuring-https-ssl"></a>

Puede crear un certificado X509 para su aplicación con `OpenSSL`. OpenSSL es una biblioteca de código abierto estándar que admite un amplio conjunto de funciones criptográficas, incluida la creación y firma de certificados x509. Para obtener más información acerca de OpenSSL, visite [www.openssl.org](https://www.openssl.org/).

**nota**  
Solo necesita crear un certificado localmente si desea [utilizar HTTPS en un entorno de una sola instancia](https-singleinstance.md) o [volver a cifrar en el backend](configuring-https-endtoend.md) con un certificado autofirmado. Si es propietario de un nombre de dominio, puede crear un certificado AWS y usarlo en un entorno con equilibrio de carga de forma gratuita mediante AWS Certificate Manager (ACM). Para obtener instrucciones, consulte [Solicitar un certificado](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html) en la *Guía del usuario de AWS Certificate Manager *.

Ejecute `openssl version` en la línea de comandos para saber si ya tiene instalado OpenSSL. Si no lo tienes, puedes compilar e instalar el código fuente siguiendo las instrucciones del [ GitHub repositorio público](https://github.com/openssl/openssl) o usar tu administrador de paquetes favorito. [OpenSSL también está instalado en las imágenes de Linux de Elastic Beanstalk, por lo que una alternativa rápida es conectarse a una instancia en un entorno en ejecución mediante el EC2 comando de la CLI de EB:](eb-cli3.md) **eb ssh**

```
~/eb$ eb ssh
[ec2-user@ip-255-55-55-255 ~]$ openssl version
OpenSSL 1.0.1k-fips 8 Jan 2015
```

Necesita crear una clave privada RSA para crear la solicitud de firma del certificado (CSR). Para crear su clave privada, utilice el comando **openssl genrsa**:

```
[ec2-user@ip-255-55-55-255 ~]$ openssl genrsa 2048 > privatekey.pem
Generating RSA private key, 2048 bit long modulus
.................................................................................................................................+++
...............+++
e is 65537 (0x10001)
```

*privatekey.pem*  
El nombre del archivo en el que desea guardar la clave privada. Normalmente, el comando **openssl genrsa** muestra el contenido de la clave privada en la pantalla, pero este comando envía el resultado a un archivo. Elija un nombre de archivo y almacene el archivo en un lugar seguro para que pueda recuperarlo más adelante. Si pierde su clave privada, no podrá utilizar su certificado.

Una CSR es un archivo que se envía a una entidad de certificación (CA) para solicitar un certificado digital de servidor. Para crear un CSR, utilice el comando **openssl req**:

```
$ openssl req -new -key privatekey.pem -out csr.pem
You are about to be asked to enter information that will be incorporated 
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
```

Introduzca la información solicitada y pulse **Intro**. En la siguiente tabla se describen y muestran ejemplos para cada campo.


****  

| Name | Descripción | Ejemplo | 
| --- | --- | --- | 
| Country Name | La abreviatura ISO de dos letras del país. | US = Estados Unidos | 
| State or Province | Nombre del país o de la región donde se ubica su organización. Este nombre no se puede abreviar. | Washington | 
| Locality Name | Nombre de la ciudad donde se ubica su organización. | Seattle | 
| Organization Name | Nombre legal completo de su organización. No abrevie el nombre de la organización. | Empresa de ejemplo | 
| Unidad organizativa | Información adicional sobre la organización (opcional). | Marketing | 
| Common Name | Nombre completo del dominio de su sitio web. Debe coincidir con el nombre de dominio que los usuarios ven cuando visitan su sitio; de lo contrario, se mostrarán los errores del certificado. | www.example.com | 
| Email address | Dirección de correo electrónico del administrador del sitio. | alguien@ejemplo.com | 

Puede enviar la solicitud de firma a un tercero para que la firme o firmarla usted mismo para las tareas de desarrollo y pruebas. Los certificados autofirmados también se pueden usar como HTTPS de fondo entre un balanceador de cargas y las instancias. EC2 

Para firmar el certificado, use el comando **openssl x509**. En el siguiente ejemplo, se utiliza la clave privada del paso anterior (*privatekey.pem*) y la solicitud de firma (*csr.pem*) para crear un certificado público con un nombre válido *public.crt* durante días. *365*

```
$ openssl x509 -req -days 365 -in csr.pem -signkey privatekey.pem -out public.crt
Signature ok
subject=/C=us/ST=washington/L=seattle/O=example corporation/OU=marketing/CN=www.example.com/emailAddress=someone@example.com
Getting Private key
```

Mantenga la clave privada y el certificado público para usarlos más adelante. Puede desechar la solicitud de firma. [Almacene siempre la clave privada en un lugar seguro](https-storingprivatekeys.md) y evite añadirla a su código fuente.

Para utilizar el certificado con la plataforma Windows Server, debe convertirlo a un formato PFX. Utilice el siguiente comando para crear un certificado PFX a partir de los archivos de clave privada y certificado público:

```
$ openssl pkcs12 -export -out example.com.pfx -inkey privatekey.pem -in public.crt
Enter Export Password: password
Verifying - Enter Export Password: password
```

Ahora que ya tiene un certificado, puede [cargarlo en IAM](configuring-https-ssl-upload.md) para su uso con un equilibrador de carga o [configurar las instancias de su entorno para terminar HTTPS](https-singleinstance.md).

# Carga de un certificado en IAM
<a name="configuring-https-ssl-upload"></a>

Para usar el certificado con el balanceador de carga del entorno de Elastic Beanstalk, cargue el certificado y la clave privada en (IAM). AWS Identity and Access Management Puedes usar un certificado almacenado en IAM con los balanceadores de carga de Elastic Load Balancing y las distribuciones de Amazon CloudFront .

**nota**  
AWS Certificate Manager (ACM) es la herramienta preferida para aprovisionar, administrar e implementar sus certificados de servidor. Para obtener más información sobre cómo solicitar un certificado de ACM, consulte [Solicitar un certificado](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html) en la *Guía del usuario de AWS Certificate Manager *. Para obtener más información sobre la importación de certificados de terceros en ACM, consulte [Importar certificados](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) en la *Guía del usuario de AWS Certificate Manager *. Utilice IAM para cargar un certificado solo si ACM no está [disponible en su región](https://docs.aws.amazon.com/general/latest/gr/acm.html). AWS 

Puede usar AWS Command Line Interface (AWS CLI) para cargar su certificado. El siguiente comando carga un certificado autofirmado denominado *https-cert.crt* con una clave privada denominada: *private-key.pem*

```
$ aws iam upload-server-certificate --server-certificate-name elastic-beanstalk-x509 --certificate-body file://https-cert.crt --private-key file://private-key.pem
{
    "ServerCertificateMetadata": {
        "ServerCertificateId": "AS5YBEIONO2Q7CAIHKNGC",
        "ServerCertificateName": "elastic-beanstalk-x509",
        "Expiration": "2017-01-31T23:06:22Z",
        "Path": "/",
        "Arn": "arn:aws:iam::123456789012:server-certificate/elastic-beanstalk-x509",
        "UploadDate": "2016-02-01T23:10:34.167Z"
    }
}
```

El `file://` prefijo indica AWS CLI que debe cargar el contenido de un archivo en el directorio actual. *elastic-beanstalk-x509*especifica el nombre con el que se va a llamar al certificado en IAM.

Si compró un certificado en una entidad de certificación y recibió un archivo de cadena de certificados, cárguelo también con la opción `--certificate-chain`:

```
$ aws iam upload-server-certificate --server-certificate-name elastic-beanstalk-x509 --certificate-chain file://certificate-chain.pem --certificate-body file://https-cert.crt --private-key file://private-key.pem
```

Anote el nombre de recurso de Amazon (ARN) del certificado. Tendrá que utilizarlo cuando actualice la configuración del equilibrador de carga para poder usar HTTPS.

**nota**  
Un certificado cargado en IAM sigue almacenado incluso después de que no se utilice en cualquier equilibrador de carga del entorno. Contiene información confidencial. Cuando ya no necesite el certificado para ningún entorno, asegúrese de eliminarlo. Para obtener detalles acerca de cómo eliminar un certificado de IAM, consulte [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html#delete-server-certificate](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html#delete-server-certificate).

Para obtener más información sobre los certificados de servidor en IAM, consulte [Uso de certificados de servidor](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) en la *Guía del usuario de IAM*.

# Almacenamiento seguro de claves privadas en Amazon S3
<a name="https-storingprivatekeys"></a>

La clave privada que utiliza para firmar el certificado público es privada y no debe confirmarse en el código fuente. Para evitar que las claves privadas se guarden en los archivos de configuración, puede cargarlas en Amazon S3 y configurar Elastic Beanstalk para descargar el archivo de Amazon S3 durante la implementación de la aplicación.

En el siguiente ejemplo, se muestran las secciones [Resources (Recursos)](environment-resources.md) y [files (archivos)](customize-containers-ec2.md#linux-files) de un [archivo de configuración](ebextensions.md) que descarga un archivo de claves privadas de un bucket de Amazon S3.

**Example .ebextensions/privatekey.config**  

```
Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Auth:
          type: "s3"
          buckets: ["elasticbeanstalk-us-west-2-123456789012"]
          roleName: 
            "Fn::GetOptionSetting": 
              Namespace: "aws:autoscaling:launchconfiguration"
              OptionName: "IamInstanceProfile"
              DefaultValue: "aws-elasticbeanstalk-ec2-role"
files:
  # Private key
  "/etc/pki/tls/certs/server.key":
    mode: "000400"
    owner: root
    group: root
    authentication: "S3Auth"
    source: https://elasticbeanstalk-us-west-2-123456789012.s3.us-west-2.amazonaws.com/server.key
```

En el ejemplo, sustituya el nombre y la URL del bucket por sus propios valores. La primera entrada de este archivo agrega un método de autenticación llamado `S3Auth` a los metadatos del grupo de escalado automático del entorno. Si ha configurado un [perfil de instancia](concepts-roles-instance.md) personalizado para su entorno, se utilizará dicho perfil; de lo contrario, se aplicará el valor predeterminado: `aws-elasticbeanstalk-ec2-role`. El perfil de instancia predeterminado tiene permiso para leer el contenido del bucket de almacenamiento de Elastic Beanstalk. Si utiliza otro bucket, [agregue permisos al perfil de instancia](iam-instanceprofile.md#iam-instanceprofile-addperms).

La segunda entrada utiliza el método de autenticación `S3Auth` para descargar la clave privada de la URL especificada y guardarla en `/etc/pki/tls/certs/server.key`. El servidor proxy puede leer la clave privada en esta ubicación para [terminar las conexiones HTTPS en la instancia](https-singleinstance.md).

El perfil de instancia asignado a las EC2 instancias de su entorno debe tener permiso para leer el objeto clave del bucket especificado. [Compruebe que el perfil de instancia tiene permiso](iam-instanceprofile.md#iam-instanceprofile-verify) para leer el objeto en IAM y que los permisos del bucket y del objeto no prohíben el perfil de instancia.

**Para ver los permisos de un bucket**

1. Abra la [consola de administración de Amazon S3](https://console.aws.amazon.com/s3/home).

1. Elija un bucket.

1. Seleccione **Properties** y después **Permissions**.

1. Compruebe que su cuenta es beneficiaria del bucket con permisos de lectura.

1. Si hay una política de bucket asociada, seleccione **Bucket policy (Política de bucket)** para ver los permisos asignados al bucket.