

# Gerenciar certificados de servidor no IAM
<a name="id_credentials_server-certs"></a>

Para habilitar conexões HTTPS para o seu site ou aplicativo na AWS você precisa de um *certificado de servidor* SSL/TLS. Para certificados em uma região compatível com o AWS Certificate Manager (ACM), recomendamos que você use o ACM para provisionar, gerenciar e implantar seus certificados de servidor. Nas regiões sem suporte, você deve usar o IAM como gerenciador de certificados. Para saber quais regiões são compatíveis com o ACM, consulte [Cotas e endpoints do AWS Certificate Manager](https://docs.aws.amazon.com/general/latest/gr/acm.html) na *Referência geral da AWS*.

**Importante**  
O ACM é a ferramenta preferencial para provisionar, gerenciar e implantar seus certificados de servidor. Com o ACM você pode solicitar um certificado ou implantar um ACM existente ou um certificado externo nos recursos da AWS. Os certificados fornecidos pelo ACM são gratuitos e são renovados automaticamente. Em uma [região compatível](https://docs.aws.amazon.com/general/latest/gr/acm.html), você pode usar o ACM para gerenciar certificados de servidor no console ou de forma programática. Para obter mais informações sobre o ACM, consulte o [https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html). Para obter mais informações sobre como solicitar um certificado do ACM, consulte [Solicitar um certificado público](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html) ou [Solicitar um certificado privado](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html) no *Guia do usuário do AWS Certificate Manager*. Para obter mais informações sobre a importação de certificados de terceiros para o ACM, consulte [Importação de certificados](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) no *Manual do usuário do AWS Certificate Manager*.

Use o IAM como um gerenciador de certificados apenas quando precisar oferecer suporte a conexões HTTPS em uma região que não é [compatível com o ACM](https://docs.aws.amazon.com/general/latest/gr/acm.html). O IAM criptografa com segurança suas chaves privadas e armazena a versão criptografada no armazenamento de certificado SSL do IAM. O IAM oferece suporte à implantação de certificados de servidor em todas as regiões, mas você deve obter seu certificado de um provedor externo para usar com a AWS. Você não pode carregar um certificado do ACM no IAM. Além disso, não é possível gerenciar seus certificados do console do IAM.

Para obter mais informações sobre como carregar certificados de terceiros para o IAM, consulte os tópicos a seguir.

**Topics**
+ [Fazer upload de um certificado de servidor (API da AWS)](#upload-server-certificate)
+ [Operações de API da AWS para certificados de servidor](#id_credentials_server-certs-api)
+ [Solucionar problemas com certificados de servidor](#server-certificate-troubleshooting)

## Fazer upload de um certificado de servidor (API da AWS)
<a name="upload-server-certificate"></a>

Para carregar um certificado de servidor para o IAM, você deve fornecer o certificado e sua chave privada correspondente. quando o certificado não for autoassinado, você também deverá fornecer uma cadeia de certificado. (Você não precisa de uma cadeia de certificado ao fazer upload de um certificado autoassinado.) Antes de fazer upload de um certificado, verifique se você tem todos estes itens e que atendem aos seguintes critérios:
+ O certificado deve ser válido no momento do upload. Você não pode fazer upload de um certificado antes de seu período de validade começar (a data `NotBefore` do certificado) ou após sua expiração (a data `NotAfter` do certificado).
+ A chave privada deve ser não criptografada. Você não pode fazer upload de uma chave privada que seja protegida por uma senha ou código de acesso. Para ajudar a descriptografar uma chave privada criptografada, consulte [Solucionar problemas com certificados de servidor](#server-certificate-troubleshooting).
+ O certificado, a chave privada e a cadeia de certificação devem ser codificados em PEM. Para ajudar a converter esses itens no formato PEM, consulte [Solucionar problemas com certificados de servidor](#server-certificate-troubleshooting).

Para usar a [API do IAM](https://docs.aws.amazon.com/IAM/latest/APIReference/) para carregar um certificado, envie uma solicitação [UploadServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadServerCertificate.html). O exemplo a seguir mostra como fazer isso com a [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/). O exemplo supõe o seguinte:
+ O certificado codificado PEM está armazenado em um arquivo chamado `Certificate.pem`.
+ A cadeia do certificado codificado PEM está armazenada em um arquivo chamado `CertificateChain.pem`.
+ A chave privada não criptografada codificada PEM está armazenada em um arquivo chamado `PrivateKey.pem`.
+ (Opcional) Você deseja etiquetar o certificado do servidor com um par de chave-valor. Por exemplo, você pode adicionar a chave de tag `Department` e o valor de tag `Engineering` para ajudar a identificar e organizar seus certificados.

Para usar o comando de exemplo a seguir, substitua os nomes de arquivo pelos seus próprios. Substitua *ExampleCertificate* pelo nome do seu certificado carregado. Se quiser marcar o certificado, substitua o par de chave-valor das tags *ExampleKey* e *ExampleValue* por seus próprios valores. Digite o comando em uma única linha contínua. O exemplo a seguir inclui quebras de linha e espaços extras para facilitar a leitura.

```
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"}'
```

Quando o comando anterior for executado com êxito, ele retornará metadados sobre o certificado carregado, incluindo [nome de recurso da Amazon (ARN)](reference_identifiers.md#identifiers-arns), nome fácil, identificador (ID), data de expiração, tags etc.

**nota**  
Se você estiver carregando um certificado de servidor para usar com o Amazon CloudFront, deverá especificar um caminho usando a opção `--path`. O caminho deve começar com `/cloudfront` e deve incluir uma barra no final (por exemplo, `/cloudfront/test/`).

Para usar o AWS Tools for Windows PowerShell para fazer upload de um certificado, use [Publish-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Publish-IAMServerCertificate.html&tocid=Publish-IAMServerCertificate).

## Operações de API da AWS para certificados de servidor
<a name="id_credentials_server-certs-api"></a>

Use os comandos a seguir para visualizar, marcar, renomear e excluir certificados de servidor.
+ Use [GetServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServerCertificate.html) para recuperar um certificado. Essa solicitação retorna o certificado, a cadeia de certificado (se foi carregado) e metadados sobre o certificado.
**nota**  
Você não pode baixar nem recuperar uma chave privada do IAM depois de carregá-lo.
+ Use [Get-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-IAMServerCertificate.html&tocid=Get-IAMServerCertificate) para recuperar um certificado.
+ Use [ListServerCertificates](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServerCertificates.html) para listar seus certificados do servidor carregados. A solicitação retorna uma lista com metadados sobre cada certificado.
+ Use [Get-IAMServerCertificates](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-IAMServerCertificates.html&tocid=Get-IAMServerCertificates) para listar seus certificados de servidor carregados.
+ Use [TagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagServerCertificate.html) para marcar um certificado de servidor existente. 
+ Use [UntagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagServerCertificate.html) para desmarcar um certificado de servidor.
+ Use [UpdateServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServerCertificate.html) para renomear um certificado de servidor ou atualizar esse caminho.

   O exemplo a seguir mostra como fazer isso com a AWS CLI.

  Para usar o exemplo de comando a seguir, substitua os nomes de certificados novo e antigo e o caminho do certificado e digite o comando em uma única linha contínua. O exemplo a seguir inclui quebras de linha e espaços extras para facilitar a leitura.

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

  Para usar o AWS Tools for Windows PowerShell para renomear um certificado de servidor ou atualizar seu caminho, use [Update-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Update-IAMServerCertificate.html&tocid=Update-IAMServerCertificate).
+ Use [DeleteServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServerCertificate.html) para excluir um certificado de servidor. 

  Para usar o AWS Tools for Windows PowerShell para excluir um certificado de servidor, use [Remove-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Remove-IAMServerCertificate.html&tocid=Remove-IAMServerCertificate).

## Solucionar problemas com certificados de servidor
<a name="server-certificate-troubleshooting"></a>

Antes de carregar um certificado para o IAM, você deve garantir que o certificado, a chave privada e a cadeia de certificados estejam todos codificados por PEM. Você também deve garantir que a chave privada não seja criptografada. Veja os exemplos a seguir.

**Example Exemplo de certificado codificado em PEM**  

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

**Example Exemplo de chave privada não criptografada, codificada por PEM**  

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

**Example Exemplo de cadeia de certificado codificado em PEM**  
Uma cadeia de certificados contém um ou mais certificados. Você pode usar um editor de texto, o comando copy no Windows ou o comando cat do Linux para concatenar os arquivos de certificado em uma cadeia. Quando você inclui vários certificados, cada certificado deve certificar o anterior. Você pode fazer isso concatenando os certificados, incluindo o certificado CA raiz por último.  
O exemplo a seguir contém três certificados, mas sua cadeia de certificados pode conter mais ou menos certificados.  

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

Se esses itens não estiverem no formato correto para carregamento no IAM, você poderá usar [OpenSSL](https://openssl.org/) para convertê-los no formato correto.

**Para converter um certificado ou uma cadeia de certificado de DER em PEM**  
Use o comando [OpenSSL **x509**](https://openssl.org/docs/manmaster/man1/x509.html) como no exemplo a seguir. No exemplo a seguir, substitua o comando `Certificate.der` pelo nome do arquivo que contém o certificado codificado em DER. Substitua `Certificate.pem` pelo nome preferido do arquivo de saída para conter o certificado codificado por PEM.  

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

**Para converter uma chave privada de DER em PEM**  
Use o comando [OpenSSL **rsa**](https://openssl.org/docs/manmaster/man1/rsa.html) como no exemplo a seguir. No exemplo a seguir, substitua o comando `PrivateKey.der` pelo nome do arquivo que contém sua chave privada codificada por DER. Substitua `PrivateKey.pem` pelo nome preferido do arquivo de saída para conter a chave privada codificada por PEM.  

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

**Para descriptografar uma chave privada criptografada (remover a senha ou a frase secreta)**  
Use o comando [OpenSSL **rsa**](https://openssl.org/docs/manmaster/man1/rsa.html) como no exemplo a seguir. Para usar o exemplo de comando a seguir, substitua `EncryptedPrivateKey.pem` pelo nome do arquivo que contém sua chave privada criptografada. Substitua `PrivateKey.pem` pelo nome preferido do arquivo de saída para conter a chave privada descriptografada codificada por PEM.  

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

**Para converter um pacote de certificado de PKCS\$112 (PFX) em PEM**  
Use o comando [OpenSSL **pkcs12**](https://openssl.org/docs/manmaster/man1/pkcs12.html) como no exemplo a seguir. No exemplo a seguir, substitua o comando `CertificateBundle.p12` pelo nome do arquivo que contém o pacote de certificado codificado por PKCS\$112. Substitua `CertificateBundle.pem` pelo nome preferido do arquivo de saída para conter o pacote de certificado codificado por PEM.  

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

**Para converter um pacote de certificado de PKCS\$17 em PEM**  
Use o comando [OpenSSL **pkcs7**](https://openssl.org/docs/manmaster/man1/pkcs7.html) como no exemplo a seguir. No exemplo a seguir, substitua o comando `CertificateBundle.p7b` pelo nome do arquivo que contém o pacote de certificado codificado por PKCS\$17. Substitua `CertificateBundle.pem` pelo nome preferido do arquivo de saída para conter o pacote de certificado codificado por PEM.  

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