HTTP는 데이터를 암호화하지 않기 때문에 보안에 취약합니다.
특히 로그인, 결제, 개인정보 입력 등 민감한 데이터를 다룰 경우 반드시 HTTPS(SSL/TLS 암호화) 를 적용해야 합니다.
AWS EC2에서 운영 중인 서버에 HTTPS를 적용하는 방법은 크게 3가지로 나뉩니다.
-
ACM (AWS Certificate Manager)
-
Let's Encrypt (무료 인증서 발급)
-
Cloudflare (역방향 프록시 + SSL)
AWS ACM (Certificate Manager)
항목 |
설명 |
---|---|
인증서 발급 |
AWS에서 무료 발급 |
갱신 주기 |
자동 갱신 |
적용 대상 |
ALB, CloudFront, API Gateway 등 |
직접 EC2 연결 |
❌ 직접 EC2에는 적용 불가, 로드밸런서 필요 |
적용 흐름
-
ACM에서 도메인 인증서를 발급
-
인증서는 Application Load Balancer (ALB) 와 연결
-
ALB에서 HTTPS 종단 → EC2는 HTTP로 내부 통신
Let's Encrypt + Nginx
가장 실용적인 방법입니다.
Let's Encrypt는 무료 SSL 인증서를 발급해주며, certbot
이라는 툴로 쉽게 설치 및 갱신이 가능합니다.
항목 |
설명 |
---|---|
인증서 발급 |
무료 (Let's Encrypt) |
갱신 주기 |
90일, 자동 갱신 가능 |
직접 EC2에 설치 가능 |
✅ 가능 |
필요한 도구 |
Nginx, Certbot |
적용 흐름
- EC2 인스턴스에 Nginx 설치
sudo apt update sudo apt install nginx
- Certbot 설치
sudo apt install certbot python3-certbot-nginx
- 인증서 발급 및 자동 설정
sudo certbot --nginx -d example.com -d www.example.com
- 갱신 테스트
sudo certbot renew --dry-run
Cloudflare로 HTTPS 설정 (무료 + 빠름)
Cloudflare는 DNS 관리뿐 아니라 SSL 프록시 기능도 제공합니다.
웹사이트 앞단에 Cloudflare를 역방향 프록시로 세우면, SSL 인증서를 자동 제공받을 수 있습니다.
항목 |
설명 |
---|---|
인증서 발급 |
자동 (Cloudflare에서 무료로 제공) |
EC2에 SSL 설치 필요 |
❌ 없음 (Cloudflare가 SSL 처리) |
성능 |
CDN + 보안 + 캐싱 포함 |
추가 설정 |
DNS는 Cloudflare에서 관리 필요 |
적용 흐름
-
Cloudflare 계정 생성 후 도메인 등록
-
DNS에서 A레코드를 EC2 Elastic IP로 설정
-
SSL/TLS 설정 → “Flexible” or “Full” 모드 선택
-
필요시, origin 인증서 발급하여 EC2에 설치
Flexible: Cloudflare ↔ 사용자 간 HTTPS
Full: Cloudflare ↔ 사용자 / Cloudflare ↔ EC2 모두 HTTPS
개인 프로젝트나 API 서버, 블로그에는 Cloudflare 방식이 매우 유리
-
✅ 빠르게 무료로 HTTPS만 적용하고 싶다 → Let's Encrypt
-
✅ CDN과 함께 속도, 보안도 챙기고 싶다 → Cloudflare
-
✅ 기업 서비스, ALB 환경에서 운영 → ACM