AWS आपकी architecture के basis पर HTTPS add करने के कई तरीके provide करता है। सही तरीका इस बात पर depend करता है कि आप load balancer, CloudFront, या एक standalone EC2 instance use करते हैं।
Decision Tree
क्या आप ALB, NLB, या CloudFront use कर रहे हैं?
├── हां → AWS Certificate Manager (ACM) use करें — free, auto-renewal
└── नहीं (standalone EC2)?
├── क्या आप Certbot install कर सकते हैं? → EC2 पर Certbot (auto-renewal)
└── कोई root नहीं / quick setup? → GetHTTPS → EC2 पर manual install
Option 1: AWS Certificate Manager (ACM) — Load Balancer और CloudFront के लिए
ACM free SSL certificates provide करता है जो auto-renew होते हैं। ये सिर्फ AWS services (ALB, NLB, CloudFront, API Gateway) के साथ काम करते हैं — आप private key download नहीं कर सकते।
Certificate request करें
- Console में AWS Certificate Manager खोलें
- Request a certificate → Request a public certificate पर click करें
- अपने domains enter करें:
example.com,*.example.com - Validation choose करें: DNS validation (recommended) या Email
- Request पर click करें
DNS Validation
ACM आपको अपने DNS में add करने के लिए एक CNAME record देता है:
- Name:
_xxxx.example.com - Value:
_yyyy.acm-validations.aws
अगर आपका DNS Route 53 में है, तो “Create records in Route 53” पर click करें — ACM इसे automatically add कर देता है।
ALB से Attach करें
- EC2 → Load Balancers पर जाएं → अपना ALB select करें
- Listeners tab → Add listener (या existing edit करें)
- Protocol: HTTPS, Port: 443
- Default action: अपने target group को forward करें
- Default SSL/TLS certificate: अपना ACM certificate select करें
- Save करें
CloudFront से Attach करें
- CloudFront पर जाएं → अपना distribution select करें
- General tab → Edit
- Custom SSL certificate: अपना ACM certificate select करें (
us-east-1में होना चाहिए) - Save करें
Option 2: EC2 पर Let’s Encrypt (Standalone Instance)
अगर आप बिना load balancer के एक EC2 instance चलाते हैं, तो certificate directly server पर install करें।
GetHTTPS use करना (कोई installation required नहीं)
- GetHTTPS से certificate get करें
- Files अपने EC2 instance पर upload करें:
scp fullchain.pem privkey.pem ec2-user@your-ec2-ip:/etc/ssl/ - Instance पर Nginx या Apache configure करें
Certbot use करना (auto-renewal)
# Amazon Linux 2023
sudo dnf install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com
# EC2 पर Ubuntu
sudo snap install --classic certbot
sudo certbot --nginx -d example.com
Certbot automatically auto-renewal set करता है।
AWS पर ACM vs Let’s Encrypt
| ACM | Let’s Encrypt (GetHTTPS/Certbot) | |
|---|---|---|
| Cost | Free | Free |
| ALB/CloudFront के साथ काम करता है | ✅ | ❌ (LE को ACM में easily import नहीं कर सकते) |
| Directly EC2 पर काम करता है | ❌ | ✅ |
| Auto-renewal | ✅ (AWS-managed) | ✅ (Certbot) या manual (GetHTTPS) |
| Private key access | ❌ (AWS के पास) | ✅ (आपके पास) |
| Wildcard | ✅ | ✅ |
| Non-AWS use | ❌ | ✅ (portable) |
Thumb rule: ALB या CloudFront के behind किसी भी चीज़ के लिए ACM use करें। Standalone EC2 instances के लिए Let’s Encrypt use करें।
Security Group Configuration
Ensure करें कि आपका EC2 या ALB security group port 80 और 443 पर inbound traffic allow करता है:
Type Protocol Port Source
HTTP TCP 80 0.0.0.0/0
HTTPS TCP 443 0.0.0.0/0
Port 80 HTTP→HTTPS redirect और Let’s Encrypt HTTP-01 challenge के लिए required है।
FAQ
क्या मैं directly EC2 पर ACM certificate use कर सकता हूं?
नहीं। ACM certificates सिर्फ AWS-managed services (ALB, NLB, CloudFront, API Gateway) से attach किए जा सकते हैं। आप private key export नहीं कर सकते। Standalone EC2 के लिए, GetHTTPS या Certbot use करें।
क्या मैं Let’s Encrypt certificate को ACM में import कर सकता हूं?
Technically हां (aws acm import-certificate), लेकिन यह ACM के through auto-renew नहीं होगा। आपको हर 90 days में फिर से import करना होगा। AWS services के लिए ACM के native certificates और EC2 के लिए Let’s Encrypt use करना simpler है।
ACM certificate के लिए कौन सा AWS region?
ALB/NLB के लिए: अपने load balancer के same region में certificate request करें। CloudFront के लिए: certificate mandatory us-east-1 (N. Virginia) में होना चाहिए, भले ही आपका origin कहीं भी हो।
क्या ACM really free है?
हां। ACM से public SSL/TLS certificates free हैं। Per certificate कोई charge नहीं है और renewal के लिए कोई charge नहीं है। आप सिर्फ उन AWS resources के लिए pay करते हैं जो certificate use करते हैं (ALB, CloudFront, etc.)।
ECS/Fargate service के लिए SSL कैसे handle करें?
अपनी ECS service के सामने एक ALB रखें और ALB listener पर ACM certificate add करें। ALB TLS terminate करता है और आपके containers को HTTP forward करता है। यह ECS के लिए standard pattern है।
S3 static website के लिए SSL कैसे handle करें?
S3 static website hosting custom SSL certificates को directly support नहीं करती। S3 के सामने CloudFront रखें और CloudFront distribution पर ACM certificate (us-east-1 से) add करें।
API Gateway के बारे में क्या?
AWS API Gateway में *.execute-api.region.amazonaws.com पर default रूप से free SSL included है। Custom domains (जैसे, api.example.com) के लिए, ACM certificate बनाएं और API Gateway में custom domain name configure करें।
क्या मुझे AWS पर ACM या GetHTTPS use करना चाहिए?
| Scenario | Use करें |
|---|---|
| ALB / NLB / CloudFront | ACM — free, auto-renewal, native integration |
| Standalone EC2 | GetHTTPS या Certbot — ACM keys EC2 में export नहीं कर सकता |
| ALB के behind EC2 | ACM ALB पर — EC2 को अपने certificate की need नहीं |
| ECS / Fargate | ACM ALB पर — standard pattern |
| Lightsail | Lightsail built-in — free Let’s Encrypt included |
अगर आप बिना load balancer के pure EC2 पर हैं, तो GetHTTPS certificate get करने का सबसे fast तरीका है — कोई AWS CLI required नहीं।