Route53 & ACM & LoadBalancer로 도메인에 HTTPS 적용하기

choko's avatar
Aug 13, 2024
Route53 & ACM & LoadBalancer로 도메인에 HTTPS 적용하기
 
 

Route53 & ACM & LoadBalacner 개념

1. Route 53

notion image
Route 53은 AWS에서 제공하는 확장 가능한 DNS(도메인 네임 시스템) 웹 서비스다.
  • 기능: 도메인 이름을 IP 주소로 변환하며, 트래픽 라우팅 및 도메인 이름 등록, 헬스 체크 기능을 제공한다.
  • 사용 사례: 웹사이트 도메인 설정, 트래픽 라우팅 정책 설정, 헬스 체크를 통한 가용성 관리.
  • 장점: 트래픽을 다양한 리소스로 유연하게 라우팅할 수 있다.

2. ACM (AWS Certificate Manager)

notion image
ACM은 SSL/TLS 인증서를 쉽게 요청, 관리, 배포할 수 있도록 지원하는 서비스다.
  • 기능: SSL/TLS 인증서를 자동으로 갱신하고 관리한다.
  • 사용 사례: HTTPS를 통해 웹사이트와 클라이언트 간의 트래픽을 암호화하는 데 사용된다.
  • 장점: 몇 번의 클릭만으로 SSL 인증서를 생성하고 AWS 서비스에 배포할 수 있다.

3. 로드 밸런서 (Load Balancer)

notion image
로드 밸런서는 여러 서버(EC2 인스턴스)로 들어오는 트래픽을 분산시켜 애플리케이션의 가용성과 성능을 높이는 데 사용된다.
  • 주요 유형:
    • Application Load Balancer (ALB): HTTP/HTTPS 트래픽을 처리하며, URL 경로나 호스트 이름에 따라 트래픽을 라우팅한다.
    • Network Load Balancer (NLB): TCP/UDP 트래픽을 처리하며, 초당 수백만 건의 요청을 처리할 수 있는 고성능 로드 밸런서다.
    • Classic Load Balancer: 기존 애플리케이션을 지원하기 위한 로드 밸런서로, 현재는 ALB와 NLB가 더 자주 사용된다.
  • 사용 사례: 웹 애플리케이션 트래픽 분산, 서버 과부하 방지, 가용성 및 성능 향상.
  • HTTPS 적용 시 로드밸런서를 사용하는 이유?
    • 단일 IP(로드밸런서 IP)로 여러 트래픽을 처리할 수 있다.
      • 각 EC2 인스턴스마다 HTTPS을 적용하는 것보다, 하나의 로드 밸런스에 HTTPS를 적요한느게 낫다.

4. VPC (Virtual Private Cloud)

VPC는 AWS에서 제공하는 가상 네트워크로, 사용자가 AWS 리소스를 격리된 네트워크 환경에서 운영할 수 있게 한다.
  • 기능: IP 주소 범위 정의, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 설정.
  • 사용 사례: 네트워크 보안 강화, 트래픽 관리, 격리된 네트워크 환경 제공.
  • 장점: 세밀한 네트워크 보안과 트래픽 제어가 가능하며, 필요에 따라 외부와 연결할 수 있다.
로드 밸런서는 특정 VPC에 배치되고. 트래픽을 해당 VPC의 인스턴스에게 분산시켜준다.
 
 
 

HTTPS 적용 절차

prerequisite

  1. EC2에 웹서버가 구축되어 있다.
  1. Route 53을 사용하여 도메인이 구축되어 있다.
      • www.example.com 로 구축이 되어 있다고 가정한다.

1. ACM을 통한 SSL 인증서 생성

SSL 인증서 요청

  • ACM 콘솔에서 요청 시작: AWS Certificate Manager(ACM) 콘솔로 이동하여 새 SSL 인증서를 요청한다.
    • notion image
    • 인증서 요청 → 퍼블릭 인증서 요청
    • 도메인 입력
      • HTTPS를 적용할 도메인을 입력한다.
      • DNS 검증, RSA 2048의 권장 옵션을 선택하여 퍼블릭 인증서를 요청한다.
        • DNS 검증은 도메인 소유권을 확인하는 방법으로, Route 53을 사용하는 경우 매우 간편하다.
       

DNS 설정을 통한 도메인 검증

  • 인증서 ID 선택 → Route 53에서 레코드 생성
  • 사용하고 싶은 도메인을 클릭하여, 해당 도메인에 ACM 인증서를 적용한다.
  • 몇분 후, 발급됨 상태가 되면 정상적으로 ACM이 등록된 것을 확인할 수 있다.
notion image

 

2. 대상 그룹 설정

  • 로드 밸런서는 요청을 대상 그룹으로 라우팅한다.
    • 로드 밸런서를 생성하기 전에 대상 그룹을 먼저 생성해주자.
  • 대상 유형 선택 → 인스턴스
  • 대상 그룹 이름 지정
  • 프로토콜 : 포트
    • 직접 사용하는 포트를 입력한다.
    • 8080 포트를 사용한다면 8080으로 작성한다.
    • notion image
      notion image
  • IP 주소 유형 - IPv4
  • VPC 그룹 선택
  • 프로토콜 버전 - HTTP 1
  • 상태 검사
    • 상태 검사는 로드 밸랜서가 타겟그룹의 상태 테스트를 위해 주기적으로 요청을 보내 확인하는 것이다.
notion image
 

3. 로드 밸런서 설정

로드 밸런서 생성

  • EC2 → 로드 밸런서 → 로드 밸런서 생성 → Application Load Balancer 생성
      1. Application Load Balancer
          • Layer 7에서 동작하는 로드 밸런서로, HTTP와 HTTPS 트래픽을 처리하는 데 최적화되어 있다.
      1. Network Load Balancer
          • Layer 4에서 동작하며, TCP, UDP, TLS 트래픽을 처리하는 데 최적화되어 있다.
          • 매우 낮은 지연 시간과 높은 처리량이 요구되는 경우에 적합하다.
      1. Gateway Load Balancer
          • Layer 3에서 동작하며, 주요 목적은 네트워크 보안 장비와 같은 장비를 확장 가능하게 만드는
  • Application Load Balancer 생성
    • 기본 구성
      • 로드 밸런서 이름
      • 체계(인터넷 경계), 로드 밸런서 IP 주소 유형(IPv4) 선택
    • 네트워크 매핑
      • VPC : 로드밸런싱 할 VPC를 선택한다.
      • 가용 영역 : 2개의 가용영역을 선택한다.
      • notion image
    • 보안 그룹
      • 로드 밸런서에 대한 트래픽의 보안 그룹을 지정한다. 자신의 인스턴스가 사용중인 보안 그룹으로 설정해준다.
    • 리스너 및 라우팅
      • HTTP, HTTPS에 대한 포트 설정을 해준다.
      • HTTP의 경우 웹서버가 8080 포트를 사용하고 있다면, 8080으로 세팅해 주어야 한다!
      • HTTPS는 보안 리스너 설정에서 ACM에서 발급한 인증서를 선택해준다.
        • notion image
    • 로드 밸런서 생성 버튼을 누르면, 몇분 후 로드 밸런서가 활성 상태가 된다.
      • notion image
       

4. Route 53에서 도메인 라우팅 설정

도메인 네임을 로드 밸런서와 연결

  • Route 53 → 호스팅 영역 → 호스팅 영역 이름 클릭 → 레코드 생성
    • 레코드 이름, 유형 선택
    • 트래픽 라우팅 대상
      • Application/Classic Load Balancer에 대한 별칭 선택
      • Region 선택
      • 생성한 로드 밸런서 선택
    • 라우팅 정책 → 단순 라우팅
    • notion image
 

5. 테스트 및 배포

HTTPS 연결 테스트

  • 도메인 접속: 웹 브라우저에서 도메인을 입력하여 HTTPS로 접속한다.
    • SSL 인증서 확인: 웹 브라우저에서 SSL 인증서가 올바르게 적용되었는지 확인한다.
      • notion image
    • 리디렉션 확인: HTTP로 접속할 경우 HTTPS로 자동 리디렉션되는지 확인한다.
      • 리디렉션 설정
        • 로드 밸런서 → 리스너 및 규칙에서 HTTP 프로토콜 선택 → 리스너 편집
          • 리스너 구성
            • 프로토콜 : HTTP, 80
            • 라우팅 액션 : URL로 리디렉션
            • 프로토콜 : HTTPS, 433
          notion image
 
 
 

정리

1. 도메인 요청

  • 사용자가 웹 브라우저에서 https://www.example.com과 같은 도메인에 접속하려고 요청을 보낸다.

2. Route 53에서 도메인 이름 해석

  • AWS Route 53이 도메인 이름(www.example.com)을 해석하여 해당 도메인이 연결된 Load Balancer의 DNS 이름 또는 IP 주소를 반환한다.

3. Load Balancer로 요청 전달

  • 사용자의 요청은 Route 53이 반환한 Load Balancer의 DNS 이름 또는 IP 주소로 전달된다.
  • 요청이 HTTP로 들어오면, Load Balancer는 이를 HTTPS로 리디렉션할 수 있다.

4. SSL/TLS 인증서 적용

  • Load Balancer는 ACM(AWS Certificate Manager)에 의해 제공된 SSL/TLS 인증서를 사용하여 HTTPS 연결을 설정한다.
  • 이 인증서로 인해 사용자의 브라우저와 Load Balancer 간의 통신이 암호화된다.

5. 트래픽 분산

  • Load Balancer는 요청을 처리하기 위해 연결된 EC2 인스턴스 중 하나로 트래픽을 분산시킨다.
  • Load Balancer는 대상 그룹(Target Group)에 설정된 EC2 인스턴스의 상태를 확인하고, 정상적으로 동작하는 인스턴스로 요청을 전달한다.

6. EC2 인스턴스에서 요청 처리

  • EC2 인스턴스는 사용자가 요청한 웹 페이지나 API 호출 등을 처리하고, 그 결과를 다시 Load Balancer로 반환한다.

7. HTTPS 응답 반환

  • Load Balancer는 EC2 인스턴스로부터 받은 응답을 다시 SSL/TLS로 암호화하여 사용자에게 반환한다.
  • 사용자의 웹 브라우저는 HTTPS로 암호화된 응답을 해독하고, 사용자에게 웹 페이지나 데이터를 표시한다.

8. 세션 종료

  • HTTPS 세션이 종료되면, 브라우저와 Load Balancer 간의 연결이 안전하게 종료된다.
Share article

Tom의 TIL 정리방