AWS ACM 완벽 가이드: 무료 SSL/TLS 인증서 발급과 관리
AWS Certificate Manager로 무료 SSL/TLS 인증서를 발급받고 ALB, CloudFront에 적용하는 방법을 상세히 설명합니다. SAA-C03 시험 필수 개념.
관련 시험 도메인
- Domain 1: Design Secure Architectures
핵심 요약
AWS Certificate Manager(ACM)는 SSL/TLS 인증서를 무료로 발급하고 자동 갱신하는 서비스입니다. ACM 인증서는 ALB, CloudFront, API Gateway와 통합되며, EC2에 직접 설치할 수 없습니다.
시험 팁
시험 핵심: ACM 퍼블릭 인증서는 무료이고 자동 갱신됩니다. 단, EC2에 직접 설치 불가 (Nitro Enclave 제외). DNS 검증이 이메일 검증보다 권장됩니다 (자동 갱신 지원). CloudFront에서 사용하려면 인증서를 **us-east-1 (버지니아)**에서 발급해야 합니다.
| 항목 | ACM 퍼블릭 인증서 | 가져온 인증서 |
|---|---|---|
| 비용 | 무료 | 무료 (인증서 구매 비용 별도) |
| 자동 갱신 | ✅ (DNS 검증 시) | ❌ (수동 갱신) |
| EC2 설치 | ❌ 불가 | ❌ 불가 (동일) |
| 사용 서비스 | ALB, CloudFront, API Gateway 등 | 동일 |
ACM이란?
개념
**AWS Certificate Manager(ACM)**는 SSL/TLS 인증서를 쉽게 프로비저닝, 관리, 배포할 수 있는 서비스입니다.
ACM의 주요 기능:
├── 퍼블릭 인증서 무료 발급
├── 인증서 자동 갱신 (DNS 검증 시)
├── AWS 서비스와 원클릭 통합
├── 외부 인증서 가져오기
└── 프라이빗 CA 운영 (Private CA)
ACM 인증서 유형
| 유형 | 설명 | 비용 |
|---|---|---|
| ACM 퍼블릭 인증서 | ACM에서 직접 발급 | 무료 |
| 가져온 인증서 | 외부 CA에서 발급받아 가져옴 | 무료 (발급 비용 별도) |
| ACM Private CA | 사설 인증서 발급 | 월 $400 + 인증서당 비용 |
인증서 발급 방법
발급 절차
ACM 인증서 발급 흐름:
1. ACM 콘솔 → 인증서 요청
2. 도메인 이름 입력 (example.com, *.example.com)
3. 검증 방법 선택 (DNS 또는 이메일)
4. 도메인 소유권 검증 완료
5. 인증서 발급 완료
도메인 검증 방법
| 검증 방법 | DNS 검증 | 이메일 검증 |
|---|---|---|
| 작동 방식 | DNS에 CNAME 레코드 추가 | 도메인 관리자 이메일로 승인 |
| 자동 갱신 | ✅ 지원 | ❌ 미지원 |
| 권장 여부 | ✅ 권장 | 제한적 상황에서 사용 |
| Route 53 | 자동 레코드 생성 가능 | - |
시험 팁
시험 포인트: DNS 검증을 사용하면 ACM이 인증서를 자동으로 갱신합니다. 이메일 검증은 갱신 시마다 수동 승인이 필요합니다.
DNS 검증 설정
DNS 검증 절차:
1. ACM에서 인증서 요청
2. ACM이 CNAME 레코드 값 제공
- 이름: _abc123.example.com
- 값: _xyz789.acm-validations.aws
3. DNS에 CNAME 레코드 추가
- Route 53: "Route 53에서 레코드 생성" 버튼
- 외부 DNS: 수동으로 레코드 추가
4. ACM이 자동으로 검증 확인
5. 인증서 발급 완료
와일드카드 인증서
와일드카드 인증서 예시:
├── *.example.com
│ ├── www.example.com ✅
│ ├── api.example.com ✅
│ ├── app.example.com ✅
│ └── sub.api.example.com ❌ (2단계 하위 도메인)
│
└── 추가 도메인
└── example.com (루트 도메인은 별도 추가)
ACM 통합 서비스
지원 서비스
ACM 인증서 사용 가능 서비스:
├── Elastic Load Balancer (ALB, NLB)
├── Amazon CloudFront
├── Amazon API Gateway
├── AWS App Runner
├── AWS Elastic Beanstalk
├── AWS Amplify
└── Amazon Cognito (사용자 풀)
사용 불가:
├── EC2 인스턴스 (직접 설치 불가)
├── 온프레미스 서버
└── 다른 클라우드
ALB에 ACM 인증서 적용
ALB HTTPS 설정:
1. ACM에서 인증서 발급 (같은 리전)
2. ALB 리스너 생성/수정
- 프로토콜: HTTPS
- 포트: 443
- 인증서: ACM 인증서 선택
3. 보안 정책 선택 (TLS 버전)
4. Target Group으로 라우팅
CloudFront에 ACM 인증서 적용
CloudFront HTTPS 설정:
1. ACM에서 인증서 발급 (⚠️ us-east-1 필수!)
2. CloudFront 배포 설정
- Alternate Domain Names: example.com
- Custom SSL Certificate: ACM 인증서 선택
- Security Policy: TLSv1.2_2021 권장
시험 팁
시험 핵심: CloudFront에서 사용할 ACM 인증서는 반드시 us-east-1 (버지니아 북부) 리전에서 발급해야 합니다. 다른 리전의 인증서는 CloudFront에서 사용할 수 없습니다!
EC2에서 HTTPS 사용하기
왜 EC2에 ACM 인증서를 직접 설치할 수 없나요?
ACM 퍼블릭 인증서의 프라이빗 키는 AWS가 관리하며 내보내기(Export)가 불가능합니다. 따라서 EC2 인스턴스에 직접 설치할 수 없습니다.
EC2에서 HTTPS를 사용하는 방법
EC2 HTTPS 구성 방법:
1. ALB + ACM (권장)
사용자 → ALB(HTTPS) → EC2(HTTP)
- ALB에서 SSL 종료
- EC2는 HTTP만 처리
- 인증서 관리 불필요
2. CloudFront + ALB + EC2
사용자 → CloudFront(HTTPS) → ALB → EC2
- 전 세계 엣지에서 SSL 종료
- 캐싱 + HTTPS
3. 외부 인증서 직접 설치
사용자 → EC2(HTTPS)
- Let's Encrypt 등 외부 CA 사용
- 인증서 수동 관리 필요
ALB를 사용한 HTTPS 구성
ALB + ACM 아키텍처:
인터넷 → ALB (HTTPS:443)
│
│ ACM 인증서
│ SSL 종료
↓
Target Group (HTTP:80)
│
┌────┼────┐
↓ ↓ ↓
EC2 EC2 EC2
시험 팁
시험 포인트: EC2에 HTTPS가 필요하면 ALB + ACM 조합을 사용하세요. ALB에서 SSL을 종료(SSL Termination)하고, ALB와 EC2 사이는 HTTP 또는 HTTPS를 사용합니다.
인증서 자동 갱신
갱신 조건
자동 갱신 조건:
├── DNS 검증 사용
├── DNS 레코드가 유효함
├── 인증서가 AWS 서비스에 연결됨
└── 만료 60일 전부터 갱신 시도
자동 갱신 불가:
├── 이메일 검증 사용
├── 가져온 인증서 (외부 CA)
└── DNS 레코드가 삭제됨
갱신 모니터링
# AWS CLI로 인증서 상태 확인
aws acm describe-certificate \
--certificate-arn arn:aws:acm:us-east-1:123456789012:certificate/xxx \
--query 'Certificate.{Status:Status,RenewalEligibility:RenewalEligibility}'
# 만료 예정 인증서 알림
# CloudWatch Events/EventBridge 사용
{
"source": ["aws.acm"],
"detail-type": ["ACM Certificate Approaching Expiration"]
}
인증서 가져오기
외부 인증서 가져오기
기존에 보유한 인증서나 다른 CA에서 발급받은 인증서를 ACM으로 가져올 수 있습니다.
가져오기 필요 항목:
├── 인증서 본문 (PEM 형식)
├── 인증서 프라이빗 키 (PEM 형식)
└── 인증서 체인 (선택, PEM 형식)
가져온 인증서 주의사항
| 항목 | ACM 발급 | 가져온 인증서 |
|---|---|---|
| 자동 갱신 | ✅ | ❌ (수동 갱신) |
| 만료 알림 | ✅ | ✅ |
| EC2 설치 | ❌ | ❌ |
| 키 관리 | AWS 관리 | 사용자 관리 |
보안 정책 (TLS 버전)
ALB 보안 정책
| 정책 | TLS 버전 | 권장 대상 |
|---|---|---|
| ELBSecurityPolicy-TLS13-1-2-2021-06 | TLS 1.3, 1.2 | 최신 클라이언트 |
| ELBSecurityPolicy-TLS-1-2-2017-01 | TLS 1.2 | 일반 권장 |
| ELBSecurityPolicy-2016-08 | TLS 1.0, 1.1, 1.2 | 레거시 호환 |
CloudFront 보안 정책
| 정책 | TLS 버전 | 설명 |
|---|---|---|
| TLSv1.2_2021 | TLS 1.2+ | 권장 |
| TLSv1.1_2016 | TLS 1.1+ | 레거시 |
| TLSv1_2016 | TLS 1.0+ | 매우 오래된 클라이언트 |
시험 팁
시험 포인트: TLS 1.2 이상이 보안상 권장됩니다. PCI-DSS 준수가 필요하면 TLS 1.2 이상을 사용해야 합니다. TLS 1.0, 1.1은 보안 취약점이 있어 비권장입니다.
ACM Private CA
프라이빗 CA란?
ACM Private CA는 조직 내부에서 사용할 사설 인증서를 발급하는 서비스입니다.
Private CA 사용 사례:
├── 내부 API 간 mTLS
├── 마이크로서비스 통신 암호화
├── IoT 디바이스 인증
├── 내부 웹사이트 HTTPS
└── 코드/문서 서명
비용
| 항목 | 비용 |
|---|---|
| Private CA | 월 $400 |
| 인증서 발급 | $0.75/개 (1,000개 이상 $0.35) |
시험 출제 포인트
자주 나오는 문제 유형
| 시나리오 | 정답 |
|---|---|
| "무료 SSL 인증서 + 자동 갱신" | ACM (DNS 검증) |
| "CloudFront에 HTTPS 적용" | us-east-1에서 ACM 인증서 발급 |
| "EC2에 HTTPS 적용" | ALB + ACM (직접 설치 불가) |
| "외부 인증서 사용" | ACM에 가져오기 (자동 갱신 불가) |
| "도메인 검증 방법 권장" | DNS 검증 (자동 갱신 지원) |
| "TLS 1.2 강제" | 보안 정책 설정 |
오답 함정
❌ ACM 인증서를 EC2에 직접 설치할 수 있다
→ 불가능 (Nitro Enclave 제외)
❌ CloudFront에 서울 리전 ACM 인증서를 사용할 수 있다
→ us-east-1 인증서만 사용 가능
❌ 이메일 검증도 자동 갱신을 지원한다
→ DNS 검증만 자동 갱신 지원
❌ 가져온 인증서도 자동 갱신된다
→ ACM에서 발급한 인증서만 자동 갱신
❌ ACM 인증서는 유료이다
→ 퍼블릭 인증서는 무료 (Private CA는 유료)
FAQ
Q1: ACM 인증서와 Let's Encrypt 중 어떤 것을 선택해야 하나요?
AWS 서비스(ALB, CloudFront)를 사용한다면 ACM, EC2에 직접 설치가 필요하다면 Let's Encrypt를 사용하세요.
| 항목 | ACM | Let's Encrypt |
|---|---|---|
| 비용 | 무료 | 무료 |
| 자동 갱신 | ✅ (AWS 관리) | ✅ (certbot 설정) |
| EC2 설치 | ❌ | ✅ |
| 관리 편의성 | 높음 | 낮음 |
Q2: 하나의 인증서에 여러 도메인을 포함할 수 있나요?
네, ACM에서 인증서 요청 시 **SAN(Subject Alternative Names)**으로 최대 10개의 도메인을 추가할 수 있습니다. 예: example.com, www.example.com, api.example.com
Q3: 인증서 발급에 얼마나 걸리나요?
DNS 검증: DNS 레코드 전파 후 수 분 내 발급 (보통 30분 이내) 이메일 검증: 이메일 승인 후 즉시 발급
Q4: 인증서가 만료되면 어떻게 되나요?
인증서가 만료되면 HTTPS 연결이 실패합니다. 브라우저에서 보안 경고가 표시됩니다. DNS 검증을 사용하면 자동 갱신되므로 만료 걱정이 없습니다.
Q5: 리전 간 인증서 공유가 가능한가요?
아니요, ACM 인증서는 리전별로 관리됩니다. 여러 리전에서 동일 도메인에 대한 인증서가 필요하면 각 리전에서 별도로 발급해야 합니다. 단, CloudFront는 us-east-1 인증서만 사용합니다.
마무리
ACM은 AWS에서 HTTPS를 구현하는 가장 쉬운 방법입니다:
- 무료 퍼블릭 인증서: ACM에서 직접 발급
- DNS 검증 권장: 자동 갱신 지원
- CloudFront: us-east-1 인증서 필수
- EC2: ALB + ACM 조합 사용
- 자동 갱신: DNS 검증 시 AWS가 자동 관리
다음으로 ELB 유형 비교와 CloudFront 배포 최적화를 학습하면 HTTPS 관련 내용을 완성할 수 있습니다.