AWS EC2 서버에 HTTPS 적용하기(1) - Route53과 로드밸런서 이용
관련 글
팀 프로젝트로 백엔드 서버를 EC2에서 배포하여 사용중인데 여기에 HTTPS를 적용하여 보았다.
적용방법은 몇가지가 있지만 크게 AWS의 Route53을 이용하는 방법과 도메인서비스의 프록싱을 이용한 방법 등이 있다.
그 중 첫번째 방법에 대해 기술한다.
무언가를 자꾸 생성하고 또 세팅하다보니 자칫 어렵다고 지레 겁먹기 쉬운데
실제로 해보면 생각보다 간단하고 쉽다.
구글링을 하다보면 여러 관련 글이 있는데 아래 참고한 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 프로토콜을 리스너 추가
- 보안 리스너 설정 (이 메뉴는 위에서 HTTPS 리스너를 추가해야만 나타난다.)
- 기본 SSL/TLS 서버 인증서 - 인증서 소스는 ‘ACM에서’ 선택
- 방금 발급받은 인증서 선택
- Load Balancer 생성
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 리소스로 트래픽 라우팅
- 트래픽 라우팅 대상에서 아까 생성한 로드밸런서 선택
- 2. AWS - Route 53 서비스에서 만든 A 유형의 레코드를 편집 한다.
-
API 툴을 이용해 새로 만든 HTTPS 주소로 API test가 잘 되는지 확인하면 끝!
-
이 방법을 사용하면 이미 소유하여 사용중인 루트 도메인을 AWS에 등록하여도 별도의 하위도메인으로써 따로이 AWS에서만 사용할 수 있다. 예를 들어 현재 본 사이트에서 사용중인
inchan.dev
의 도메인에api.inchan.dev
의 하위도메인을 뽑아내 연결하여 사용할 수도 있다. 일종의 RESTful API 방법처럼… ↩︎
Related Content
- AWS Public IP 요금 부과에 따른 대처 및 EC2를 이용한 RDS 외부 연결하기
- AWS EC2 서버에 HTTPS 적용하기(2) - Cloudflare 이용 방법
- AWS EC2에서 Product 서버와 개발용 서버 같이 사용하기
- AWS RDS 데이터 - 다른 계정으로 이전하기
- Error Log - AWS EC2의 SSH 접속이 안될 때