A AWS oferece diversas formas de adicionar HTTPS dependendo da sua arquitetura. A abordagem correta depende de você usar um load balancer, CloudFront ou uma instância EC2 standalone.
Árvore de decisão
Você está usando ALB, NLB ou CloudFront?
├── Sim → Use o AWS Certificate Manager (ACM) — gratuito, renovação automática
└── Não (EC2 standalone)?
├── Pode instalar o Certbot? → Certbot no EC2 (renovação automática)
└── Sem root / configuração rápida? → GetHTTPS → instalação manual no EC2
Opção 1: AWS Certificate Manager (ACM) — para load balancers e CloudFront
O ACM fornece certificados SSL gratuitos com renovação automática. Eles funcionam apenas com serviços AWS (ALB, NLB, CloudFront, API Gateway) — você não pode baixar a chave privada.
Solicitar um certificado
- Abra o AWS Certificate Manager no console
- Clique em Request a certificate → Request a public certificate
- Digite seu(s) domínio(s):
example.com,*.example.com - Escolha a válidação: DNS validation (recomendado) ou Email
- Clique em Request
Válidação DNS
O ACM fornece um registro CNAME para adicionar ao seu DNS:
- Name:
_xxxx.example.com - Value:
_yyyy.acm-validations.aws
Se seu DNS está no Route 53, clique em “Create records in Route 53” — o ACM adiciona automaticamente.
Anexar ao ALB
- Vá para EC2 → Load Balancers → selecione seu ALB
- Aba Listeners → Add listener (ou edite o existente)
- Protocol: HTTPS, Port: 443
- Default action: Forward to your target group
- Default SSL/TLS certificate: selecione seu certificado ACM
- Salve
Anexar ao CloudFront
- Vá para CloudFront → selecione sua distribuição
- Aba General → Edit
- Custom SSL certificate: selecione seu certificado ACM (deve estar em
us-east-1) - Salve
Opção 2: Let’s Encrypt no EC2 (instâncias standalone)
Se você roda uma instância EC2 única sem load balancer, instale o certificado diretamente no servidor.
Usando GetHTTPS (sem necessidade de instalação)
- Obtenha um certificado no GetHTTPS
- Faça upload dos arquivos para sua instância EC2:
scp fullchain.pem privkey.pem ec2-user@your-ec2-ip:/etc/ssl/ - Configure Nginx ou Apache na instância
Usando Certbot (renovação automática)
# Amazon Linux 2023
sudo dnf install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com
# Ubuntu no EC2
sudo snap install --classic certbot
sudo certbot --nginx -d example.com
O Certbot configura a renovação automática automaticamente.
ACM vs Let’s Encrypt na AWS
| ACM | Let’s Encrypt (GetHTTPS/Certbot) | |
|---|---|---|
| Custo | Gratuito | Gratuito |
| Funciona com ALB/CloudFront | ✅ | ❌ (não é possível importar LE para ACM facilmente) |
| Funciona diretamente no EC2 | ❌ | ✅ |
| Renovação automática | ✅ (gerenciado pela AWS) | ✅ (Certbot) ou manual (GetHTTPS) |
| Acesso à chave privada | ❌ (AWS retém) | ✅ (você tem) |
| Wildcard | ✅ | ✅ |
| Uso fora da AWS | ❌ | ✅ (portátil) |
Regra geral: Use ACM para tudo que está atrás de um ALB ou CloudFront. Use Let’s Encrypt para instâncias EC2 standalone.
Configuração do security group
Certifique-se de que o security group do seu EC2 ou ALB permite tráfego de entrada nas portas 80 e 443:
Type Protocol Port Source
HTTP TCP 80 0.0.0.0/0
HTTPS TCP 443 0.0.0.0/0
A porta 80 é necessária para redirecionamentos HTTP→HTTPS e para challenges HTTP-01 do Let’s Encrypt.
Perguntas frequentes
Posso usar certificados ACM diretamente no EC2?
Não. Certificados ACM só podem ser anexados a serviços gerenciados pela AWS (ALB, NLB, CloudFront, API Gateway). Você não pode exportar a chave privada. Para EC2 standalone, use GetHTTPS ou Certbot.
Posso importar um certificado Let’s Encrypt no ACM?
Tecnicamente sim (aws acm import-certificate), mas ele não terá renovação automática pelo ACM. Você precisaria reimportar a cada 90 dias. É mais simples usar os certificados nativos do ACM para serviços AWS e Let’s Encrypt para EC2.
Qual região AWS para certificados ACM?
Para ALB/NLB: solicite o certificado na mesma região do seu load balancer. Para CloudFront: o certificado deve estar em us-east-1 (N. Virginia), independentemente de onde está sua origem.
O ACM é realmente gratuito?
Sim. Certificados SSL/TLS públicos do ACM são gratuitos. Não há cobrança por certificado e não há cobrança por renovação. Você paga apenas pelos recursos AWS que usam o certificado (ALB, CloudFront, etc.).
Como lidar com SSL para um serviço ECS/Fargate?
Coloque um ALB na frente do seu serviço ECS e anexe um certificado ACM ao listener do ALB. O ALB encerra o TLS e encaminha HTTP para seus containers. Este é o padrão para ECS.
Como lidar com SSL para um site estático no S3?
O hosting de site estático do S3 não suporta certificados SSL personalizados diretamente. Coloque o CloudFront na frente do S3 e anexe um certificado ACM (de us-east-1) à distribuição CloudFront.
E o API Gateway?
O AWS API Gateway inclui SSL gratuito por padrão em *.execute-api.region.amazonaws.com. Para um domínio personalizado (ex.: api.example.com), crie um certificado ACM e configure um custom domain name no API Gateway.
Devo usar ACM ou GetHTTPS na AWS?
| Cenário | Use |
|---|---|
| ALB / NLB / CloudFront | ACM — gratuito, renovação automática, integração nativa |
| EC2 standalone | GetHTTPS ou Certbot — ACM não pode exportar chaves para EC2 |
| EC2 atrás de ALB | ACM no ALB — EC2 não precisa de seu próprio certificado |
| ECS / Fargate | ACM no ALB — padrão recomendado |
| Lightsail | Lightsail built-in — inclui Let’s Encrypt gratuito |
Se você está em EC2 puro sem load balancer, GetHTTPS é a forma mais rápida de obter um certificado — sem necessidade de AWS CLI.