

# Administración de certificados de servidor en IAM
<a name="id_credentials_server-certs"></a>

Para habilitar las conexiones HTTPS en su sitio web o aplicación en AWS, necesita un *certificado de servidor* SSL/TLS. Si se trata de una región compatible con AWS Certificate Manager (ACM), le recomendamos que utilice ACM para aprovisionar, administrar e implementar los certificados de servidor. En las regiones no compatibles, debe utilizar IAM como Certificate Manager. Para saber qué regiones admite , consulte [puntos finales y cuotas de AWS Certificate Manager](https://docs.aws.amazon.com/general/latest/gr/acm.html) en la *Referencia general de AWS*.

**importante**  
ACM es la herramienta preferida para aprovisionar, administrar e implementar los certificados de servidor. Con ACM puede solicitar un certificado o implementar un certificado de ACM existente o un certificado externo en los recursos de AWS. Los certificados que proporciona ACM son gratuitos y se renuevan automáticamente. En las [regiones compatibles](https://docs.aws.amazon.com/general/latest/gr/acm.html), puede utilizar ACM para administrar los certificados de servidor desde la consola o mediante programación. Para obtener más información sobre ACM, consulte la [https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html). Para obtener más información sobre cómo solicitar un certificado de ACM, consulte [Solicitar un certificado público](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html) o [Solicitar un certificado privado](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.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 como Certificate Manager solo cuando tenga que admitir conexiones HTTPS en una región que no es [compatible con ACM](https://docs.aws.amazon.com/general/latest/gr/acm.html). IAM cifra de forma segura sus claves privadas y almacena la versión cifrada en el almacenamiento de certificados SSL de IAM. IAM admite la implementación de certificados de servidor en todas las regiones, pero debe obtener su certificado de un proveedor externo para utilizarlo con AWS. No puede cargar un certificado de ACM en IAM. Además, no puede administrar los certificados desde la consola de IAM.

Para obtener más información acerca de cómo cargar certificados de terceros en IAM, consulte los siguientes temas.

**Topics**
+ [Carga de un certificado de servidor (API de AWS)](#upload-server-certificate)
+ [Operaciones de API de AWS para certificados de servidor](#id_credentials_server-certs-api)
+ [Solución de problemas de certificados de servidor](#server-certificate-troubleshooting)

## Carga de un certificado de servidor (API de AWS)
<a name="upload-server-certificate"></a>

Para cargar un certificado de servidor en IAM, debe proporcionar el certificado y la clave privada correspondiente. Si el certificado no está autofirmado, también debe proporcionar una cadena de certificados. (No necesita una cadena de certificados para cargar un certificado autofirmado). Antes de cargar un certificado, asegúrese de que dispone de todos estos elementos y de que cumplen los siguientes criterios:
+ El certificado debe ser válido en el momento de la carga. No puede cargar un certificado antes de que empiece su periodo de validez (la fecha `NotBefore` del certificado) o después de que expire (la fecha `NotAfter` del certificado).
+ La clave privada no debe estar cifrada. No puede cargar una clave privada que esté protegida por una contraseña o frase de contraseña. Para ayudar a descifrar una clave privada cifrada, consulte [Solución de problemas de certificados de servidor](#server-certificate-troubleshooting).
+ El certificado, la clave privada y la cadena de certificados deben tener todos codificación PEM. Para ayudar a convertir estos elementos al formato PEM, consulte [Solución de problemas de certificados de servidor](#server-certificate-troubleshooting).

Para utilizar la [API de IAM](https://docs.aws.amazon.com/IAM/latest/APIReference/) para cargar un certificado, envíe una solicitud [UploadServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadServerCertificate.html). El siguiente ejemplo muestra cómo hacerlo con la [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/). El ejemplo supone lo siguiente:
+ El certificado codificado en PEM se guarda en un archivo llamado `Certificate.pem`.
+ La cadena de certificados codificados en PEM se guarda en un archivo llamado `CertificateChain.pem`.
+ La clave privada codificada en PEM sin cifrar se guarda en un archivo llamado `PrivateKey.pem`.
+ (Opcional) Debe etiquetar el certificado del servidor con un par de valor de clave. Por ejemplo, puede agregar la clave de etiqueta `Department` y el valor de la etiqueta `Engineering` para ayudarlo a identificar y organizar los certificados.

Para utilizar los siguientes comandos de ejemplo, sustituya estos nombres de archivo por los suyos. Reemplace *ExampleCertificate* por un nombre para el certificado cargado. Si desea etiquetar el certificado, reemplace el par clave-valor de la etiqueta *ExampleKey* y *ExampleValue* con sus propios valores. Escriba el comando en una línea continua. El siguiente ejemplo incluye saltos de línea y espacios adicionales para facilitar su lectura.

```
aws iam upload-server-certificate --server-certificate-name ExampleCertificate
                                    --certificate-body file://Certificate.pem
                                    --certificate-chain file://CertificateChain.pem
                                    --private-key file://PrivateKey.pem
                                    --tags '{"Key": "ExampleKey", "Value": "ExampleValue"}'
```

Si el comando anterior se ejecuta correctamente, devolverá los metadatos del certificado cargado, incluido su [Amazon Resource Name (ARN)](reference_identifiers.md#identifiers-arns), su nombre descriptivo, su identificador (ID), su fecha de vencimiento, etiquetas y otra información.

**nota**  
Si va a cargar un certificado de servidor para utilizarlo con Amazon CloudFront, debe especificar una ruta mediante la opción `--path`. La ruta debe empezar con `/cloudfront` y debe incluir una barra inclinada al final (por ejemplo, `/cloudfront/test/`).

Para utilizar las AWS Tools for Windows PowerShell para cargar un certificado, utilice [Publish-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Publish-IAMServerCertificate.html&tocid=Publish-IAMServerCertificate).

## Operaciones de API de AWS para certificados de servidor
<a name="id_credentials_server-certs-api"></a>

Utilice los siguientes comandos para ver, etiquetar, cambiar el nombre y eliminar los certificados de servidor.
+ Utilice [GetServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServerCertificate.html) para recuperar un certificado. Esta solicitud devuelve el certificado, la cadena de certificados (si se ha cargado alguna) y los metadatos del certificado.
**nota**  
No puede descargar o recuperar una clave privada de IAM después de cargarla.
+ Utilice [Get-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-IAMServerCertificate.html&tocid=Get-IAMServerCertificate) para recuperar un certificado.
+ Utilice [ListServerCertificates](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServerCertificates.html) para hacer una lista de los certificados de servidor cargados. La solicitud devolverá una lista que contiene los metadatos de cada certificado.
+ Utilice [Get-IAMServerCertificates](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-IAMServerCertificates.html&tocid=Get-IAMServerCertificates) para hacer una lista de los certificados de servidor cargados.
+ Utilice [TagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagServerCertificate.html) para etiquetar un certificado de servidor existente. 
+ Utilice [UntagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagServerCertificate.html) para quitar la etiqueta de un certificado de servidor.
+ Utilice [UpdateServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServerCertificate.html) para cambiar el nombre de un certificado de servidor o para actualizar su ruta.

   El siguiente ejemplo muestra cómo hacerlo con la AWS CLI.

  Para utilizar el siguiente comando de ejemplo, sustituya los nombres antiguo y nuevo del certificado y la ruta del certificado y escriba el comando en una línea continua. El siguiente ejemplo incluye saltos de línea y espacios adicionales para facilitar su lectura.

  ```
  aws iam update-server-certificate --server-certificate-name ExampleCertificate
                                      --new-server-certificate-name CloudFrontCertificate
                                      --new-path /cloudfront/
  ```

  Para utilizar las AWS Tools for Windows PowerShell para cambiar el nombre de un certificado de servidor o para actualizar su ruta, utilice [Update-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Update-IAMServerCertificate.html&tocid=Update-IAMServerCertificate).
+ Utilice [DeleteServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServerCertificate.html) para eliminar un certificado de servidor. 

  Para utilizar las AWS Tools for Windows PowerShell para eliminar un certificado de servidor, utilice [Remove-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Remove-IAMServerCertificate.html&tocid=Remove-IAMServerCertificate).

## Solución de problemas de certificados de servidor
<a name="server-certificate-troubleshooting"></a>

Antes de cargar un certificado en IAM, debe asegurarse de que el certificado, la clave privada y la cadena de certificados estén codificados en PEM. También debe asegurarse de que la clave privada no esté cifrada. Vea los siguientes ejemplos.

**Example Ejemplo de certificado codificado por PEM**  

```
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
```

**Example Ejemplo de clave privada sin cifrar y codificada en PEM**  

```
-----BEGIN RSA PRIVATE KEY-----
Base64-encoded private key
-----END RSA PRIVATE KEY-----
```

**Example Ejemplo de cadena de certificados codificada en PEM**  
Una cadena de certificados contiene uno o más certificados. Puede utilizar un editor de texto, el comando copy de Windows o el comando cat de Linux para concatenar archivos de certificado en una cadena. Cuando incluye varios certificados, cada certificado debe certificar el certificado anterior. Puede hacerlo concatenando los certificados, incluyendo el certificado de CA raíz al final.  
El siguiente ejemplo contiene tres certificados, pero una cadena de certificados podría contener más o menos certificados.  

```
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
```

Si estos elementos no tienen el formato adecuado para cargarlos en IAM, puede utilizar [OpenSSL](https://openssl.org/) para convertirlos al formato adecuado.

**Para convertir un certificado o cadena de certificados de DER a PEM**  
Utilice el comando [OpenSSL **x509**](https://openssl.org/docs/manmaster/man1/x509.html), como en el siguiente ejemplo. En el siguiente comando de ejemplo, sustituya `Certificate.der` por el nombre del archivo que contiene el certificado con codificación DER. Sustituya `Certificate.pem` por el nombre preferido del archivo de salida que va a contener el certificado con codificación PEM.  

```
openssl x509 -inform DER -in Certificate.der -outform PEM -out Certificate.pem
```
 

**Para convertir una clave privada de DER a PEM**  
Utilice el comando [OpenSSL **rsa**](https://openssl.org/docs/manmaster/man1/rsa.html), como en el siguiente ejemplo. En el siguiente comando de ejemplo, sustituya `PrivateKey.der` por el nombre del archivo que contiene la clave privada con codificación DER. Sustituya `PrivateKey.pem` por el nombre preferido del archivo de salida que va a contener la clave privada con codificación PEM.  

```
openssl rsa -inform DER -in PrivateKey.der -outform PEM -out PrivateKey.pem
```
 

**Para descifrar una clave privada cifrada (eliminar la contraseña o frase de contraseña)**  
Utilice el comando [OpenSSL **rsa**](https://openssl.org/docs/manmaster/man1/rsa.html), como en el siguiente ejemplo. Para utilizar el siguiente comando de ejemplo, sustituya `EncryptedPrivateKey.pem` por el nombre del archivo que contiene la clave privada cifrada. Sustituya `PrivateKey.pem` por el nombre preferido del archivo de salida que va a contener la clave privada no cifrada con codificación PEM.  

```
openssl rsa -in EncryptedPrivateKey.pem -out PrivateKey.pem
```
 

**Para convertir un paquete de certificados de PKCS \$112 (PFX) a PEM**  
Utilice el comando [OpenSSL **pkcs12**](https://openssl.org/docs/manmaster/man1/pkcs12.html), como en el siguiente ejemplo. En el siguiente comando de ejemplo, sustituya `CertificateBundle.p12` por el nombre del archivo que contiene el paquete de certificados con codificación PKCS\$112. Sustituya `CertificateBundle.pem` por el nombre preferido del archivo de salida que va a contener el paquete de certificado con codificación PEM.  

```
openssl pkcs12 -in CertificateBundle.p12 -out CertificateBundle.pem -nodes
```
 

**Para convertir un paquete de certificados de PKCS\$17 a PEM**  
Utilice el comando [OpenSSL **pkcs7**](https://openssl.org/docs/manmaster/man1/pkcs7.html), como en el siguiente ejemplo. En el siguiente comando de ejemplo, sustituya `CertificateBundle.p7b` por el nombre del archivo que contiene el paquete de certificados con codificación PKCS\$17. Sustituya `CertificateBundle.pem` por el nombre preferido del archivo de salida que va a contener el paquete de certificado con codificación PEM.  

```
openssl pkcs7 -in CertificateBundle.p7b -print_certs -out CertificateBundle.pem
```