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.

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, 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 Solucionar problemas com certificados de servidor.

  • 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.

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.

Operações de API da AWS para certificados de servidor

Use os comandos a seguir para visualizar, marcar, renomear e excluir certificados de servidor.

  • Use GetServerCertificate 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 para recuperar um certificado.

  • Use ListServerCertificates para listar seus certificados do servidor carregados. A solicitação retorna uma lista com metadados sobre cada certificado.

  • Use Get-IAMServerCertificates para listar seus certificados de servidor carregados.

  • Use TagServerCertificate para marcar um certificado de servidor existente.

  • Use UntagServerCertificate para desmarcar um certificado de servidor.

  • Use UpdateServerCertificate 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.

  • Use DeleteServerCertificate para excluir um certificado de servidor.

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

Solucionar problemas com certificados de servidor

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 de 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