Como adicionar o certificado SSL ao AWS EC2 com a ajuda do novo serviço AWS Certificate Manager

91

A AWS surgiu com um novo serviço AWS Certificate Manager . Uma coisa que entendi da descrição é que, se usarmos esse serviço, não precisaremos mais pagar pelo certificado.

Eles estão fornecendo certificados para Elastic Load Balancer (ELB) e CloudFront, mas eu não encontrei EC2 em lugar nenhum.

Existe alguma maneira de usar o certificado com EC2?

Bhavik Joshi
fonte
1
você poderia dar uma olhada em letsencrypt.org para certificados gratuitos e confiáveis, com contribuidores como chrome e facebook parece muito bom
Tom
1
Ow, eu não sabia sobre isso. No entanto, acho que eles estão certos em não permitir isso. Você poderia criar aliases em outro domínio (por meio de Route53, por exemplo) e não usar o nome aws dns padrão fornecido?
Tom
Recentemente encontrei um vídeo [abril de 2020] em que eles criam um certificado SSL \ TLS com o AWS Certificate Manager e o colocam em uma instância EC2 atrás de um balanceador de carga. youtu.be/bWPTq8z1vFY Foi muito útil.
nktsamba de

Respostas:

110

P: Posso usar certificados em instâncias do Amazon EC2 ou em meus próprios servidores?

Não. No momento, os certificados fornecidos pelo ACM só podem ser usados ​​com serviços específicos da AWS.


P: Com quais serviços AWS posso usar os certificados fornecidos pelo ACM?

Você pode usar o ACM com os seguintes serviços AWS:

• Elastic Load Balancing

• Amazon CloudFront

• AWS Elastic Beanstalk

• Amazon API Gateway

https://aws.amazon.com/certificate-manager/faqs/

Você não pode instalar os certificados criados pelo Amazon Certificate Manager (ACM) em recursos aos quais você tem acesso direto de baixo nível, como EC2 ou servidores fora da AWS, porque você não tem acesso às chaves privadas. Esses certificados só podem ser implantados em recursos gerenciados pela infraestrutura da AWS - ELB e CloudFront - porque a infraestrutura da AWS mantém as únicas cópias das chaves privadas dos certificados que gera e as mantém sob forte segurança com controles de acesso interno auditáveis .

Você teria que ter suas máquinas EC2 ouvindo atrás do CloudFront ou ELB (ou ambos, em cascata, também funcionariam) para usar esses certificados para conteúdo proveniente do EC2 ... porque você não pode instalar esses certificados diretamente em máquinas EC2 .

Michael - sqlbot
fonte
13
A boa notícia é que não há cobrança se você emitir um certificado e apenas descobrir aqui que não pode instalá-lo.
kraftydevil
1
lol @kraftydevil Acho que você tem razão. Observe que letsencrypt.org é uma fonte legítima, reconhecida e sem fins lucrativos para certificados SSL gratuitos que você pode instalar em qualquer lugar que desejar. (E, devo acrescentar, não tenho nenhuma afiliação com Let's Encrypt.)
Michael - sqlbot
6
@EngineerDollery não, isso só é verdade para um caso específico. Você absolutamente pode usar o Let's Encrypt no EC2. O que você não pode fazer é obter um certificado Let's Encrypt para um *.amazonaws.comnome de host EC2 porque, sensatamente, a política Let's Encrypt não permite isso ... mas para um domínio que você controla que aponta para um IP de instância EC2, ou ELB, ou CloudFront, você definitivamente pode usar o Let's Encrypt, da mesma forma que em qualquer outro lugar.
Michael - sqlbot
2
Link para um exemplo com um certificado automatizado permite criptografar implantado em EC2: docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Efren
Segui com a configuração do ELB tudo agora estou obtendo 502 Bad Gateway quando apontei um registro para o ELB
MuaathAli
2

Não, você não pode usar o gerenciador de certificados aws para implantar certificados no EC2. Os certificados do gerenciador de certificados só podem ser implantados no cloudfront e no balanceador de carga elástico. Para usá-lo no ec2, você precisa colocar o elb em cima do ec2, de modo que a solicitação do cliente para o balanceador de carga seja protegida por https e do elb para o servidor da web ec2 em http.

prasoon
fonte
1

Se você estiver usando o AWS ACM Cert para fins internos apenas, provavelmente poderá usar o AWS ACM Private CA para emitir os certificados (acho que você também pode usá-lo para fins de tráfego público / externo se sua CA raiz for publicamente confiável).

https://docs.aws.amazon.com/acm-pca/latest/userguide/PcaGetStarted.html

Durante a inicialização do aplicativo / EC2 / contêiner, defina uma etapa para exportar seu certificado / chave privada ACM CA privada emitido para o seu destino e comece a referi-lo para servir o tráfego.

https://docs.aws.amazon.com/cli/latest/reference/acm/export-certificate.html

Uma coisa boa é que você pode controlar quem pode chamar o recurso de exportação do certificado usando a função IAM, para que nem todos possam baixar a chave privada do certificado.

Uma desvantagem disso é que a CA privada é um serviço caro da AWS (US $ 400 / mês). https://aws.amazon.com/certificate-manager/pricing/

Imran
fonte
Você não pode usar export-certificate com ACM PCA - mas também não precisa dele: você já terá a chave privada e get-certificate fornece o certificado e a cadeia.
Willaert grátis de
@FreeWillaert Tenho certeza, você não obterá a parte da Chave Privada com get-certificate. verifique esta documentação CLI . e isso . Verifique ambas as saídas das respostas cli. Já testei esses comandos CLI.
Imran
@FreeWillaert sim :). O comando CLI acima pode ser usado no script de inicialização do Docker ou script de dados do usuário EC2 para baixar o certificado de chave privada no tempo de execução e começar a utilizá-lo para servir o tráfego TLS. Especialmente em ASG. A parte boa é que você pode controlar quem pode chamar o comando CLI acima usando funções IAM para que nem todos tenham acesso às chaves privadas.
Imran
1
@Imran você deve escrever One downside with this is, private CA is expensive AWS service($400/month).em negrito no topo, por exemplo, eu perderia se não tivesse lido essa resposta 2ª vez
Piekarski D
@PiekarskiD feito. Obrigado pela sugestão!!. se você gostar da minha resposta, você pode votar positivamente sempre !!.
Imran
0

Adicionando aos comentários acima, você não pode usar o AWS Certificate Manager para isso, mas você pode adicionar um certificado Let's Encrypt para ec2 em um servidor Windows executando IIS e é muito fácil:

  1. Associe um ip elástico à sua instância ec2.

  2. Certifique-se de ter um domínio registrado. Você não pode usar nomes de tipo ec2----------.us-east-1.compute.amazonaws.com que vêm com sua instância.

  3. Por meio das configurações de DNS do seu provedor de domínio, faça com que seu domínio aponte para o seu Elastic IP.

  4. Conecte-se à sua instância ec2 e adicione seu nome de domínio às ligações do site.

  5. Acesse https://github.com/PKISharp/win-acme/releases

  6. Procure em recursos e use a versão mais recente (win-acme.v2.0.10.444.zip por exemplo). Esta é a única pasta de ativos de que você precisa.

  7. Descompacte a pasta, abra o terminal como administrador e faça cd na pasta descompactada.

  8. Execute wacs.exe e siga as instruções.

  9. Certifique-se de que o grupo de segurança atribuído à sua instância permite o tráfego (pelo menos o seu próprio IP) através da porta HTTPS que você escolheu no IIS; esta é a porta 443 por padrão.

Achei os links abaixo úteis quando estava tentando descobrir isso. Aqui está um vídeo usando uma versão anterior, se você precisar de mais ajuda, mas é a mesma ideia.

https://www.youtube.com/watch?v=fq5OUOjumuM

Além disso, este artigo pode ser útil:

https://weblog.west-wind.com/posts/2016/feb/22/using-lets-encrypt-with-iis-on-windows

Sr. J
fonte