Amazon CloudFront가 Mutual TLS Authentication(mTLS) 를 공식 지원하면서, 이제 엣지(Edge) 레이어에서 클라이언트 인증서(X.509)를 검증한 뒤 검증된 요청만 오리진으로 전달할 수 있게 되었습니다.
이 기능은 별도의 인증 프록시나 API Gateway 앞단 인증 로직을 제거할 수 있어, 보안과 운영 효율성을 함께 확보하는 데 큰 도움이 됩니다.
아래 글은 단순한 기능 설명이 아니라, 클라우드 환경에서 CloudFront + mTLS를 실제로 어떻게 설정하면 되는지를 중심으로 안내합니다.
개요
CloudFront의 mTLS는 클라이언트(브라우저·앱·단말·서버)가 서버 인증서만 검증하는 기존 TLS와 달리, 서버가 클라이언트 인증서를 다시 확인하는 방식입니다.
CloudFront는 엣지에서 인증서를 확인하고, 인증서가 CA 체인과 매칭되지 않으면 오리진 레이어까지 트래픽이 도달하지 못하도록 차단합니다.
즉, CloudFront가 보안 게이트웨이 역할을 담당하게 되어 운영 복잡도를 크게 낮출 수 있습니다.
1. 사전 필요사항
mTLS를 적용하기 전에 아래 요소들을 먼저 준비해야 합니다.
준비해야 할 구성 요소
- 클라이언트 인증서(X.509)
- 실제 서비스에서 사용할 디바이스·파트너·서버 등에 배포할 인증서입니다.
- 만료 정책과 재발급 전략까지 포함해 관리해야 합니다.
- 신뢰할 루트/중간 CA
- CloudFront는 특정 CA 체인을 신뢰 대상으로 등록해야 합니다.
- 선택지:
- 서드파티 CA
- AWS Private Certificate Authority(Private CA)
→ AWS 내부에서 전체 PKI 체계를 통합 관리할 수 있어 관리 효율이 좋습니다.
- 클라이언트 인증서 배포 전략
- 디바이스라면 프로비저닝 시 인증서 삽입
- 파트너 API라면 CSR 기반 발급 과정 운영
- 브라우저 기반이라면 조직 내부 인증서 설치 정책 적용 등
2. 신뢰할 CA 준비
mTLS의 핵심은 CloudFront가 어떤 인증서를 신뢰할 것인가입니다.
2.1. AWS Private CA를 사용할 경우
AWS Private CA를 사용하면 AWS 내에서 쉽게 CA를 구성하고 인증서를 발급할 수 있습니다.
실행 순서
- AWS Private CA 콘솔 이동
- 루트 CA 생성
- 필요하다면 중간 CA 생성
- 클라이언트 인증서 템플릿 생성
- 디바이스/파트너에서 CSR 생성하여 인증서 발급
AWS Private CA는 CA 체인을 자동으로 관리해 주기 때문에 CloudFront mTLS 설정과 잘 맞습니다.
2.2. 외부 CA를 사용할 경우
외부 CA에서 루트/중간 CA 인증서를 PEM 형식으로 export 받습니다.
CloudFront는 PEM 체인을 그대로 업로드하면 됩니다.
3. CloudFront에서 mTLS 구성
CloudFront 배포(Distribution)에 대해 아래 작업을 수행합니다.
3.1. CloudFront로 신뢰할 CA 업로드
Console 기준:
- CloudFront 콘솔 → Security 또는 mTLS Trust Store 메뉴 이동
- Create Trust Store 선택
- 루트/중간 CA 인증서 체인을 업로드
- 이름 지정 후 저장
업로드 후 Trust Store ID가 생성됩니다.
CLI 예시는 다음과 같은 형태입니다:
aws cloudfront create-trust-store \
--name clientTrustStore \
--ca-certs file://ca-bundle.pem
3.2. CloudFront Distribution에 mTLS 적용
기존 배포를 사용해도 되고, 새로운 배포를 생성해도 됩니다.
콘솔 기준 설정 절차
- CloudFront → Distributions → 대상 배포 선택
- Behaviors 탭 선택
- mTLS를 적용할 Behavior 선택 (예: /api/*)
- “Require client authentication(mTLS)” 옵션 활성화
- Trust Store 선택
- 저장
이제 CloudFront는 해당 Behavior 경로로 들어오는 모든 요청을 검증합니다.
4. 클라이언트에서 인증서 제시 방식 설정
클라이언트는 반드시 TLS 핸드셰이크에서 인증서를 제시해야 CloudFront가 허용합니다.
예시: cURL 호출
curl https://your-cloudfront-domain.com/api \
--cert client.crt \
--key client.key
5. 오리진 레벨 구성
CloudFront가 검증을 마친 뒤 요청은 정상적으로 오리진으로 전달됩니다.
오리진에서는 추가 인증 없이 수신하도록 설계해도 되고, 필요하다면 CloudFront가 추가로 제공하는 헤더(CF-mTLS-Verified 등)를 기반으로 보안 규칙을 적용할 수 있습니다.
6. 운영 환경에서 반드시 확인해야 하는 사항
6.1. 인증서 로테이션
기존 인증서 만료 시:
- 자동 재발급
- CloudFront Trust Store 업데이트
- 클라이언트 인증서 배포 자동화
이 체계가 없으면 갑작스러운 인증 실패가 발생할 수 있습니다.
6.3. 디바이스 분실/키 유출 대응
mTLS는 인증서 기반 보안이므로 다음이 필수입니다.
- 폐기(Revocation)
- 재발급
- 목록 관리(CRL/OCSP)
CloudFront는 CA 체인을 기반으로 인증서 유효성을 검증합니다.
6.3. 트래픽 성능
mTLS는 TLS 핸드셰이크가 더 복잡해지므로 다음을 고려해야 합니다:
- Keep-Alive 유지
- Connection 재사용
- Edge와 클라이언트 간 RTT 고려
정리
CloudFront mTLS는 별도의 인증 프록시를 구축하지 않고도 엣지에서 클라이언트 인증을 수행할 수 있어,
API·IoT·B2B 서비스 등에서 제로트러스트 기반 보안을 구현할 수 있는 강력한 기능입니다.
구성은 비교적 단순하지만, CA 관리, 인증서 배포와 갱신 체계, 오리진 보안 정책 설계 등은 반드시 사전에 정리해야 합니다.
'AWS' 카테고리의 다른 글
| [AWS] AWS Transit Gateway 비용 나누기 (0) | 2025.12.06 |
|---|---|
| [AWS] Site-to-Site VPN BGP 로그 활성화 방법 (0) | 2025.12.06 |
| [AWS] Amazon Route 53 Accelerated Recovery 구성 가이드 (0) | 2025.12.04 |
| [AWS] Interconnect - Multicloud 서비스란? (1) | 2025.12.04 |
| [AWS] Amazon Route 53 Global Resolver 구성 방법 (0) | 2025.12.03 |