Programming/배포

[AWS Elastic Beanstalk, Route53] SSL 인증 기반 HTTPS 설정하기

지고르 2023. 2. 3. 12:07
Elastic Beanstalk에서 HTTPS 설정하기

 

Elastic Beanstalk으로 EC2를 배포해 ALB까지(기본 80포트) 설정된 상태에서, 프로젝트를 안전하게 운영하기 위해 서버-클라이언트 간 암호화 통신 프로토콜인 HTTPS를 설정했다. 요즘은 HTTPS가 설정되지 않은 사이트에 들어가면 경고창이 뜨기 때문에 보안 측면 뿐만 아니라 사용자 관점에서 필수적이라고 느꼈다.

 

 

HTTPS 설정 단계는 도메인 구매 (가비아) → 도메인 등록 (AWS Route53) → HTTPS 설정 (AWS CM, ALB) 순서대로 설명할 예정이다.

 

 

1. 도메인 구매

도메인은 www.gabia.com  에서 구매했다.

www.freenom.com  에서는 무료 도메인도 구매할 수 있다고 한다. 그런데 우리가 시도했을 때에는 원하는 도메인명이 무료로 나오지 않아 위 사이트에서 16,500원에 구매했다. (사용 기한 1년)

 

 

 

2. Route53에 도메인 등록 (한달에 0.55 달러)

 

(1) Route53에 호스팅 영역 생성

호스팅 영역 생성 버튼 클릭

구매한 도메인 이름을 입력하고 그대로 생성 버튼을 클릭한다.

 

 

 

(2) 서브 도메인 레코드 추가

레코드 생성 버튼 클릭

 

우리 프로젝트의 백엔드 API 서버인 api.xxx.com을 서브 도메인 레코드로 추가했다.

별칭을 활성화하고 세번째 칸에 뜨는 ALB를 선택하면 생성했던 ALB와 서브 도메인이 연결된다.

 

 

 

(3) 도메인 호스팅 사이트 (가비아) - Route53 도메인 연결

사진에 표시된 네 주소를 가비아의 네임 서버에 각각 입력하면 가비아와 Route53 도메인이 연결된다.

이제 클라이언트는 도메인을 통해 ALB를 거쳐 백엔드 API와 소통할 수 있다.

 

 

※ 네임 서버(=DNS 서버) : DNS(도메인-IP 연결 시스템/환경)를 운영하는 서버

도메인 주소 입력

→ DNS가 IP 탐색, 해당 IP의 웹서버에 요청 전달

→ 클라이언트-서버 통신 성공

 

 

 

3. HTTPS 설정 - SSL/TLS 인증서 발급 및 적용 

 

 

※ SSL/TLS : 보안용 암호화 프로토콜

TLS는 SSL을 계승함 (SSL은 deprecated 됐으나 명칭은 혼용되고 있음)

HTTPS는 통신 내용의 암호화를 위해 SSL/TLS 프로토콜 사용

 

 

(1) AWS CM SSL/TLS 인증서 발급 (무료)

Certificate Manger에서 요청 버튼 클릭
다음 버튼 클릭

도메인 이름으로 *.xxx.com을 입력한다. 이렇게 하면 하나의 도메인명으로 www.xxx.com, api.xxx.com, prod.xxx.com 등 다양한 사이트를 보호할 수 있다.

DNS 검증 단계에서는 Route53에서 레코드 생성이라는 파란 버튼을 클릭해 CNAME 레코드를 생성한다.

 

 

검증을 위해 해당 CNAME 레코드의 이름과 값을 가비아에서 DNS 설정에 추가하고 5분 정도 기다리면 검증 보류 → 완료로 상태가 변경된다.

 

 

 

4. HTTPS 설정 - ALB에 443, SSL 포트 등록

 

※ LB(Load Balancer)

트래픽을 여러 서버에 균등하게 분산해주는 서비스 (Scale Out)

종류 : ALB(Application "), NLB(Network "), CLB(Classic ")

 

※ ALB(Application Load Balancer)

HTTP, HTTPS 프로토콜을 수용하고 외부 요청을 받음 => HTTPS 적용에 적합한 설정

 

 

EB 환경 - 프로젝트 환경 클릭 - 구성 - 로드 밸런서 편집

 

ALB 리스너에 443 포트를 추가한다. 

우리 프로젝트는 클라이언트-서버가 HTTPS로만 소통하기 때문에 80포트는 비활성화했다.

 

 

이제 서브 도메인으로 들어가면 HTTPS가 성공적으로 적용된 것을 볼 수 있다!

 

 

 

 

 

참고 링크

더보기