들어가며
이전 글에서 ALB를 도입해 고정 DNS 주소를 확보했다. 하지만 아직 두 가지가 남아있다.
- http://springboot-alb-xxxxxxxxx.ap-northeast-2.elb.amazonaws.com 같은 긴 주소 대신 커스텀 도메인 사용
- HTTP가 아닌 HTTPS로 보안 통신
이번 글에서는 ACM으로 SSL 인증서를 발급하고, Route 53으로 커스텀 도메인을 ALB에 연결한 뒤 HTTPS까지 적용하는 전 과정을 다룬다.
전체 구조

전체 순서
1. ACM에서 SSL 인증서 발급
2. Route 53 호스팅 영역 생성
3. 외부 도메인 네임서버를 Route 53으로 변경
4. ACM CNAME 레코드 Route 53에 자동 등록
5. ALB에 HTTPS 443 리스너 추가
6. Route 53에서 ALB로 A 레코드 연결
1. ACM SSL 인증서 발급
ACM(AWS Certificate Manager)은 AWS에서 무료로 SSL 인증서를 발급해주는 서비스다.
⚠️ 리전을 반드시 ap-northeast-2 (서울)로 설정해야 한다. ALB와 같은 리전의 인증서만 연결할 수 있다.
AWS → ACM → 인증서 요청 클릭
- 인증서 유형: 퍼블릭 인증서
- 도메인 이름: example.com
💡 본인이 구매한 도메인을 입력해야 한다. 예를 들어 Gabia에서 myapp.com 을 구매했다면 myapp.com 을 입력한다. 본인 소유가 아닌 도메인은 DNS 검증을 통과할 수 없어 인증서 발급이 불가능하다. 이 글에서는 편의상 example.com 으로 표기한다.
- 추가 이름: *.example.com (서브도메인도 커버하기 위해 추가)
- 검증 방법: DNS 검증
- 키 알고리즘: RSA 2048 (기본값)
- 내보내기 활성화: 비활성화 (ALB 연결 용도라 필요 없음)
→ 요청 클릭




example.com 과 *.example.com 을 같이 추가하면 와일드카드 인증서가 발급된다. 동일한 도메인이라 CNAME 값이 같게 나오는데 정상이다.
2. Route 53 호스팅 영역 생성
Route 53은 AWS의 DNS 서비스다. 호스팅 영역은 도메인의 DNS 레코드를 관리하는 공간이다.
AWS → Route 53 → 호스팅 영역 → 호스팅 영역 생성
- 도메인 이름: example.com
- 유형: 퍼블릭 호스팅 영역
→ 생성 클릭

생성 후 NS 레코드에서 네임서버 4개를 확인한다.
ns-xxx.awsdns-xx.com
ns-xxx.awsdns-xx.co.uk
ns-xxx.awsdns-xx.net
ns-xxx.awsdns-xx.org

3. 외부 도메인 네임서버 변경
Gabia, 호스팅코리아 등 도메인을 구매한 곳에서 네임서버를 Route 53 것으로 변경한다.
도메인 관리 → 네임서버 변경에서 위에서 확인한 4개 네임서버를 입력한다.
⚠️ Route 53에서 네임서버 뒤에 . 이 붙어있는데 외부 도메인 관리 페이지에서는 점(.)을 제거하고 입력해야 한다.
예시: ns-xxx.awsdns-xx.com. → ns-xxx.awsdns-xx.com
네임서버 변경은 최대 48시간 걸릴 수 있지만 보통 훨씬 빨리 반영된다.
4. ACM CNAME 레코드 자동 등록
DNS 검증을 위해 ACM이 제공하는 CNAME 레코드를 Route 53에 등록해야 한다.
수동으로 등록할 수도 있지만 AWS에서 자동으로 해주는 버튼을 제공한다.
ACM → 인증서 → 방금 만든 인증서 클릭 → Route 53에서 레코드 생성 버튼 클릭

버튼을 누르면 Route 53에 CNAME 레코드가 자동으로 등록되고 5~10분 후 인증서 상태가 발급됨으로 바뀐다.

5. ALB에 HTTPS 리스너 추가
EC2 → 로드 밸런서 → springboot-alb → 리스너 탭 → 리스너 추가
- 프로토콜: HTTPS
- 포트: 443
- 라우팅 액션: 대상 그룹으로 전달
- 대상 그룹: springboot-target-group
- SSL 인증서: 방금 발급한 example.com 선택
→ 추가 클릭




6. Route 53 A 레코드 생성
Route 53에서 도메인을 ALB로 연결하는 A 레코드를 생성한다.
Route 53 → 호스팅 영역 → example.com → 레코드 생성
- 레코드 이름: 비워두기 (루트 도메인 사용)
- 레코드 유형: A
- 별칭: 켜짐
- 트래픽 라우팅 대상: Application Load Balancer에 대한 별칭
- 리전: 아시아 태평양(서울) ap-northeast-2
- 로드 밸런서: springboot-alb 선택
→ 레코드 생성 클릭


7. 접속 확인
브라우저에서 접속하면 HTTPS가 적용된 커스텀 도메인으로 Spring Boot 서버에 접근할 수 있다.
https://example.com

HTTP → HTTPS 리다이렉트 설정 (선택 사항)
http://example.com 으로 접속하면 자동으로 https://example.com 으로 리다이렉트하도록 설정할 수 있다.
EC2 → 로드 밸런서 → springboot-alb → 리스너 탭 → HTTP:80 → 리스너 편집
- 기본 작업: URL로 리디렉션
- 프로토콜: HTTPS
- 포트: 443
- 상태 코드: 301 (영구 리다이렉트)
→ 저장 클릭
이렇게 하면 HTTP로 접속해도 자동으로 HTTPS로 전환된다.

마무리
| 항목 | 이전 | 이후 |
| 주소 | ALB DNS 주소 (긴 URL) | https://example.com |
| 보안 | HTTP | HTTPS |
| 인증서 | 없음 | ACM 무료 인증서 |
| DNS 관리 | 외부 도메인 | Route 53 |
ACM 인증서는 무료이고 자동 갱신도 된다. Route 53 호스팅 영역은 월 $0.50 정도의 비용이 발생한다.
이제 https://example.com 으로 접속하면 ECS Fargate에서 실행 중인 Spring Boot 서버로 안전하게 연결된다.
'IT > Cloud' 카테고리의 다른 글
| Spring Boot 서버를 AWS ECS Fargate로 배포하기 - ALB로 고정 도메인 연결 (2) (0) | 2026.03.28 |
|---|---|
| Spring Boot 서버를 AWS ECS Fargate로 배포하기 - ECR + ECS + GitHub Actions CI/CD 구축 (1) (0) | 2026.03.26 |
| Nginx Rate Limiting으로 DDoS 공격 막기 (0) | 2026.02.14 |
| 스프링부트 서버 과부화 테스트(2) (0) | 2025.09.10 |
| 스프링부트 서버 과부화 테스트 (0) | 2025.09.09 |