Gerenciar certificados de servidor no IAM - AWS Identity and Access Management

Gerenciar certificados de servidor no IAM

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 na Referência geral da AWS.

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, 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 Guia do usuário do AWS Certificate Manager. Para obter mais informações sobre como solicitar um certificado do ACM, consulte Solicitar um certificado público ou Solicitar um certificado privado 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 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. 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.

Fazer upload de um certificado de servidor (API da AWS)

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 Solução de problemas.

  • 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 Solução de problemas.

Para usar a API do IAM para carregar um certificado, envie uma solicitação UploadServerCertificate. O exemplo a seguir mostra como fazer isso com a AWS Command Line Interface (AWS 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), 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.

Recuperar um certificado de servidor (API da AWS)

Para usar a API do IAM para recuperar um certificado, envie uma solicitação GetServerCertificate. O exemplo a seguir mostra como fazer isso com a AWS CLI. Substitua ExampleCertificate pelo nome do certificado a ser recuperado.

aws iam get-server-certificate --server-certificate-name ExampleCertificate

Quando o comando anterior for executado com êxito, ele retornará 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.

Para usar o AWS Tools for Windows PowerShell para recuperar um certificado, use Get-IAMServerCertificate.

Listar certificados de servidor (API da AWS)

Para usar a API do IAM para listar seus certificados de servidor carregados, envie uma solicitação ListServerCertificates. O exemplo a seguir mostra como fazer isso com a AWS CLI.

aws iam list-server-certificates

Quando o comando anterior for executado com êxito, ele retornará uma lista com metadados sobre cada certificado.

Para usar o AWS Tools for Windows PowerShell para listar seus certificados de servidor carregados, use Get-IAMServerCertificates.

Marcar e desmarcar certificados de servidor (API da AWS)

Você pode associar etiquetas aos seus recursos do IAM para organizar e controlar o acesso a eles. Para usar a API do IAM para etiquetar um certificado de servidor existente, envie uma solicitação TagServerCertificate. O exemplo a seguir mostra como fazer isso com a AWS CLI.

aws iam tag-server-certificate --server-certificate-name ExampleCertificate --tags '{"Key": "ExampleKey", "Value": "ExampleValue"}'

Quando o comando anterior for bem-sucedido, nenhuma saída será retornada.

Para usar a API do IAM para desetiquetar um certificado de servidor, envie uma solicitação UntagServerCertificate. O exemplo a seguir mostra como fazer isso com a AWS CLI.

aws iam untag-server-certificate --server-certificate-name ExampleCertificate --tag-keys ExampleKeyName

Quando o comando anterior for bem-sucedido, nenhuma saída será retornada.

Renomear um certificado de servidor ou atualizar seu caminho (API da AWS)

Para usar a API do IAM para renomear um certificado de servidor ou atualizar seu caminho, envie uma solicitação UpdateServerCertificate. 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/

Quando o comando anterior for executado com êxito, ele não retornará nenhuma saída.

Para usar o AWS Tools for Windows PowerShell para renomear um certificado de servidor ou atualizar seu caminho, use Update-IAMServerCertificate.

Excluir um certificado de servidor (API da AWS)

Para usar a API do IAM para excluir um certificado de servidor, envie uma solicitação DeleteServerCertificate. O exemplo a seguir mostra como fazer isso com a AWS CLI.

Para usar o seguinte comando de exemplo, substitua ExampleCertificate pelo nome do certificado a ser excluído.

aws iam delete-server-certificate --server-certificate-name ExampleCertificate

Quando o comando anterior for executado com êxito, ele não retornará nenhuma saída.

Para usar o AWS Tools for Windows PowerShell para excluir um certificado de servidor, use Remove-IAMServerCertificate.

Solução de problemas

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.

exemplo Exemplo de certificado codificado em PEM
-----BEGIN CERTIFICATE----- Base64-encoded certificate -----END CERTIFICATE-----
exemplo Exemplo de chave privada não criptografada, codificada por PEM
-----BEGIN RSA PRIVATE KEY----- Base64-encoded private key -----END RSA PRIVATE KEY-----
exemplo 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 para convertê-los no formato correto.

Para converter um certificado ou uma cadeia de certificado de DER em PEM

Use o comando OpenSSL x509 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 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 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#12 (PFX) em PEM

Use o comando OpenSSL pkcs12 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#12. 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#7 em PEM

Use o comando OpenSSL pkcs7 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#7. 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