Contents

AWS EC2 서버에 HTTPS 적용하기(1) - Route53과 로드밸런서 이용

관련 글

 

팀 프로젝트로 백엔드 서버를 EC2에서 배포하여 사용중인데 여기에 HTTPS를 적용하여 보았다.

적용방법은 몇가지가 있지만 크게 AWS의 Route53을 이용하는 방법과 도메인서비스의 프록싱을 이용한 방법 등이 있다.

그 중 첫번째 방법에 대해 기술한다.

겁먹지 말기
AWS내에서 각 서비스를 이리저리 다니며
무언가를 자꾸 생성하고 또 세팅하다보니 자칫 어렵다고 지레 겁먹기 쉬운데
실제로 해보면 생각보다 간단하고 쉽다.

구글링을 하다보면 여러 관련 글이 있는데 아래 참고한 2개의 웹페이지가 가장 잘 설명되어있다.

미리 말해두기

해당 참고 사이트의 글을 보다보면 친절하게 잘 설명되어있음에도 살짝씩 어리둥절할 때가 있다.
왜냐면 AWS 웹 UI가 생각보다 자주 바뀌는듯 해서 설명에 참고된 스크린샷과 현재 시점의 AWS 화면이 다르기 때문이다.

이에 스크린 샷 없이 AWS 서비스의 흐름에 따라 outline 형식으로 설명을 한다.

1. 도메인 준비

우선 사전 작업으로 도메인이 반드시 필요하다.
도메인 구입에 관해서는 워낙 많은 글들이 있기에 설명은 생략한다.

2. AWS - Route 53 서비스

  • 호스팅 영역 생성

  • 생성한 호스팅 영역의 레코드 추가

    • 유형 : A-IPv4 주소 및 AWS 리소스로 트래픽 라우팅
    • 값 : EC2 Public IP
  • 추가 이후, NS 유형의 값 4개가 있는 레코드가 더불어 생성됨을 확인

    • 🚀 중요 - 이 NS유형의 값을 1번에서 준비한 도메인 서비스에서 DNS 레코드로 추가한다.

3. AWS - ACM (AWS Certivicate Manager) 서비스

  • 퍼블릭 인증서 요청
  • 도메인 입력후 검증 (검증 대기는 보통 10분 이내 완료된다.)
  • ‘Route 53에서 레코드 생성’ 버튼을 클릭
  • AWS-Route 53 서비스로 가서 CNAME 레코드가 대상에 등록되어 완료됨을 확인

4. AWS - EC2 서비스

  • 좌측 사이드메뉴에서 로드 밸런싱 - 대상그룹 - 대상그룹 생성

    • 대상유형 : 인스턴스
    • 프로토콜 : HTTP
  • 대상그룹 메뉴에서 ‘편집’ 클릭

    • 본인의 EC2 인스턴스를 선택하고 ‘등록된 항목에 추가’ 버튼을 클릭한 후, ‘저장’
  • 사이드메뉴 - 로드 밸런싱 - 로드밸런서 - 로드밸런서 생성

    • Load Balancer 생성
      • ALB(Application Load Balancer) 선택
    • 기본 구성
      • 매핑 - 가용영역 2개 이상 선택
      • 🚀 가용영역에는 사용중인 EC2가 위치한 영역이 반드시 포함되어야 한다.
    • 보안 그룹
      • EC2에서 사용중인 보안그룹 또는 새로 생성하여 선택
      • 🚀 중요 - 해당 보안그룹의 인바운드 규칙에는 HTTPS 유형의 규칙이 추가되어있어야 한다.
    • 리스너 및 라우팅
      • 🚀 HTTPS 프로토콜을 리스너 추가
        (포트는 자동으로 443에 맞춰지는데 특별한 상황이 아니라면 그대로 둔다.)
        • 주의 - ‘리스너 태그 추가’가 아닌 ‘리스너 추가’ 버튼으로 진행
        • 🚀 중요 - 로드 밸런싱에서 만든 ‘대상그룹’을 선택!
    • 보안 리스너 설정 (이 메뉴는 위에서 HTTPS 리스너를 추가해야만 나타난다.)
      • 기본 SSL/TLS 서버 인증서 - 인증서 소스는 ‘ACM에서’ 선택
      • 방금 발급받은 인증서 선택

5. 마지막 - 도메인 설정은 다시 Route 53 서비스에서

  • Route 53 - 호스팅 영역 - 아까 생성한 도메인 클릭

  • 레코드 편집

    • 2. AWS - Route 53 서비스에서 만든 A 유형레코드를 편집 한다.
      • 기존 값은 아마도 EC2의 public IPv4주소가 들어있을 것이다.
      • 편집화면에 보이는 옵션 중 별칭을 선택하면 Application/Classic Load Balancer라는 메뉴를 선택할 수 있다.
      • 이를 선택한 후, 값으로 아까 만든 로드밸런서를 선택한다.
      • 라우팅 정책은 단순 라우팅으로 하면 된다.
    • 하위 도메인으로 설정하고 싶다면 레코드 이름을 기입한다.
      • 예를 들어 등록한 도메인이 abc.com 이라면, HTTPS로 연결할 해당 서버에만 유효한 하위 도메인을 추가할 수 있다.
      • 즉 하위도메인으로 ‘api’를 기입하면, 실제 AWS에서 사용하게 될 해당 주소는 https://api.abc.com/API주소들 이렇게 된다. 1
    • 레코드 유형 : A-IPv4 주소 및 AWS 리소스로 트래픽 라우팅
    • 트래픽 라우팅 대상에서 아까 생성한 로드밸런서 선택
  • API 툴을 이용해 새로 만든 HTTPS 주소로 API test가 잘 되는지 확인하면 끝!


  1. 이 방법을 사용하면 이미 소유하여 사용중인 루트 도메인을 AWS에 등록하여도 별도의 하위도메인으로써 따로이 AWS에서만 사용할 수 있다. 예를 들어 현재 본 사이트에서 사용중인 inchan.dev의 도메인에 api.inchan.dev 의 하위도메인을 뽑아내 연결하여 사용할 수도 있다. 일종의 RESTful API 방법처럼… ↩︎