AWS Services/ACM(Amazon Certificate Manager)

[AWS] ACM 과 Route53을 이용한 사설 도메인 HTTPS(SSL) 등록 방법 -(3) ELB에 SSL 인증서 적용 및 HTTPS 요청 처리 확인

[앙금빵] 2022. 4. 25.

Architecture Diagram

Architecture Diagram

※ 위 다이어그램은 https://it-eldorado.tistory.com/117?category=824496 를 참고하여 각색하였다.

 

이전글 포스팅

[AWS] ACM 과 Route53을 이용한 사설 도메인 HTTPS(SSL) 등록 방법 -(1) ACM 서비스 개요 / DNS 동작과정 이해 -(1)
https://anggeum.tistory.com/entry/AWS-ACM-과-Route53을-이용한-사설-도메인-HTTPSSSL-등록-방법-1-ACM-서비스-개요-DNS-동작과정-이해

[AWS] ACM 과 Route53을 이용한 사설 도메인 HTTPS(SSL) 등록 방법 -(2) ACM을 이용한 SSL 인증서 등록 (HTTPS)
https://anggeum.tistory.com/entry/AWS-ACM-과-Route53을-이용한-사설-도메인-HTTPSSSL-등록-방법-2-ACM을-이용한-SSL-인증서-등록-HTTPS

 

Goal

(1) ACM 서비스 개요 / DNS 동작과정 이해

(2) ACM으로 발급한 SSL 인증서를 외부 도메인 기관(NS record) 및 Route53(CNAME record) 등록

(3) ALB에 SSL 인증서 적용 및 HTTPS 요청 처리 확인

 

본 글에서 전체 Diagram 중 노랑색 네모로 표시된 영역에 대하여 진행을 할 것이다.

실습 Diagram -(2) ALB에 SSL 인증서 적용 및 HTTPS 요청 처리 확인

사전 준비

  • 1대 이상의 Web 서버가 설치된 인스턴스 (+Server Name 설정 완료)

 

Step 2. ALB에 SSL 인증서 적용 및 HTTPS 요청 처리 확인

이 단계에서는 EC2 인스턴스에 연결할 로드밸런서를 생성하고 Step 1 단계에서 발급받은 인증서를 설정해주는 것이 목적이다. 

ELB 특징 비교 (ALB vs NLB vs CLB)

 

로드밸런서는 ALB(Application Load Balacner)를 채택할 것이다.

사용자와 서버가 HTTPS를 이용하여 암호화 통신을 할 경우, SSL Handshake를 통한 암호화된 메시지를 전달해야 한다. 이러한 작업은 리소스 소모가 크며, 서버에 큰 부담이 된다. ALB를 채택하는 이유를 크게 2가지로 정리하면 다음과 같다.

 

(1) ALB는 HTTP의 Header, 요청 방법 등을 이용하여 사용자의 요청을 적절한 대상 그룹으로 라우팅(부하분산)을 쉽게 설정할 수 있는 특징을 지닌다.

(2) ALB에 SSL 인증서를 탑재함으로서 ALB가 대신하여 SSL 인증서를 이용하여 암호화 통신을 실시한다. 이를 통해 EC2 인스턴스의 부담을 줄일 수 있다.

 

2-1. ALB  생성

이제, ALB를 생성해보자.

Sheme
외부 요청을 받는 목적으로 생성할 것이기에 Internet-facing 항목을 체크해 준다.

IP address type
IPv6를 사용해야 한다면 Dualstack 항목을 체크해주고, IPv4만 이용할 계획이라면 IPv4를 체크해준다.

Network Mapping
외부 요청을 받는 목적이기에 Internet-facing으로 설정하였다. Public Subnet에 ELB가 배치되어야 클라이언트로부터 받는 요청을 제일 앞단에서 받아 SSL Handshaking 과정 이후 EC2로 Plain Text로 전달된다.

 

앞서 사전작업으로 도메인을 Route53에 생성 후 CNAME 값을 등록하였고, ACM을 통해 SSL 인증서를 발급받았다. 이를 ALB에 적용해보자. Listener 항목에 HTTPS(443)을 추가하게 되면 보안 정책과 인증서 적용 항목이 나오게 된다. 여기서 앞서 생성한 SSL 인증서를 적용하자.

 

Target Group 설정값

대상그룹의 EC2 포트들은 80으로 설정되어야 한다. HTTPS 통신(443)은 ALB가 진행하므로 EC2 인스턴스는 Plain Text 통신만 하면 되기에 80으로만 설정되어야 한다.

<Test-TG 설정값>
<Security Group Configuration>

 

2-2. Route53에 ALB를 지칭하는 A 레코드 등록

우리가 등록한 도메인으로 접속을 하였을 때 DNS 쿼리를 받는 네임서버들이 로드밸런서의 위치를 알 수 있도록 A 레코드 등록이 필요하다. 이를 위해 앞서 생성한 Route53에 다시 찾아가서 ALB에 대한 A 레코드를 등록하자.

 

Route53 > Hosted Zones > anggum.com > Create record

Record name 항목은 빈칸으로 둬도 된다. 만약 하위 도메인 이름을 명시하고 싶다면 입력하고, 그렇지 않다면 입력하지 않는다. 빈칸으로 두면 등록한 도메인 그 자체를 의미한다.

 

2-3. ALB에서 HTTP를 HTTPS로 리다이렉션

마지막 단계이다. 80번 포트로 들어오는 요청을 443포트로 리다이렉션 하는 작업이다.

EC2 > Load Balacners > Add listener

(1) Add Listener를 클릭.

 

(2) Listener 설정

Protocol : HTTP(80)

Default actions: Redirect

 

(3) 설정 결과 확인

 

인증서 등록 확인

정상적으로 인증서 적용이 완료되었음을 알 수 있다.

 

비고

일전에 ACM을 생성하였을 때 자동 갱신이 부적격(Ineligible) 상태였다. 그러나, ELB에 ACM을 등록 한 후 다시 ACM을 들어가 보면 '적격(eligible)' 상태로 바뀐 것을 확인할 수 있다.

 

이는 ACM 자동갱신 조건에 충족하였기 때문이다.

ELIGIBLE: if associated with another AWS service, such as Elastic Load Balancing or CloudFront.

 


참조

[AWS] 커스텀 도메인 등록 및 HTTPS 설정 (SSL/TLS 인증서 발급)

https://it-eldorado.tistory.com/117?category=824496

댓글