Private

[ezfarm] 도메인 등록 및 HTTPS 설정

highright96 2021. 7. 24.

해당 글의 프로젝트는 다음 URL에서 확인할 수 있다.

프로젝트 링크

 

GitHub - 2021-ict-hanium/ezfarm-back

Contribute to 2021-ict-hanium/ezfarm-back development by creating an account on GitHub.

github.com

 

HTTPS 적용 이유

현재 ezfarm 프로젝트의 프론트 서버(배포 환경)는 HTTPS 프로토콜을 사용하고, API 서버는 HTTP 프로토콜을 사용하고 있다. 프론트 서버를 로컬에서 띄워 API 서버와 통신하는데 별 문제가 없었지만, 배포 환경에서 API 서버와 통신할 때에는 다음과 같은 에러가 발생했다.

Mixed Content: The page at '...' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 
'...'. This request has been blocked; the content must be served over HTTPS.

HTTPS 프로토콜을 사용하는 서버에서 HTTP 프로토콜을 사용하는 서버에 요청을 보내 발생하는 에러이다. 프론트 서버를 다시 HTTP 통신 방식으로 바꾸는 방법도 있겠지만, 안전한 API 서버를 구축하기 위해 HTTP에서 HTTPS 통신 방식으로 바꾸게 되었다.

HTTPS 적용 과정

HTTPS 프로토콜을 적용하기 위해 아래와 같은 순서로 진행하였으며, 모든 과정은 AWS에서 제공하는 기능을 사용하였다.

 

1. 도메인 등록 및 호스팅 영역 생성

2. SSL 인증서 발급

3. 로드밸런서 생성(생성한 SSL 인증서 등록, ezfarm EC2 연결)

4. 도메인과 로드밸런서 연결

도메인 등록 및 호스팅 영역 생성

AWS Route 53 서비스 -> 등록된 도메인 -> 도메인 등록

 

호스팅 영역 -> 등록된 도메인의 호스팅 영역이 생성됐는지 확인

ACM에서 SSL 인증서 발급

AWS Certificate Manager -> 인증서 관리자 -> 인증서 요청

 

사용하는 도메인 이름 추가(hanium-ezfarm.com)

프론트, API 서버 구분을 위해 *.hanium-ezfarm.com도 추가

 

DNS 검증 선택, 원하는 태그 추가

AWS Route 53 레코드 생성 후 검증이 완료될 때까지 기다린다. (30분 이내)

로드밸런서(생성한 SSL 인증서 등록, ezfarm EC2 연결)

AWS EC2 서비스 -> 로드밸런서 -> 로드밸런서 생성

로드밸런서 유형은 Application Load Balancer을 선택한다. HTTP 요청을 HTTPS로 리다이렉트 하도록 쉽게 설정할 수 있기 때문이다.

 

1단계 HTTP, HTTPS 리스너 추가, 사진에는 없지만 가용 영역 모두 선택

 

2단계 생성할 로드밸런서에 SSL 인증서 등록

 

3단계 보안그룹은 연결할 EC2에 보안그룹을 선택

 

4단계 라우팅 구성은 기본값을 유지한다. 이 설정은 로드밸런서가 받은 요청을 넘겨줄 대상 그룹을 지정한다. HTTPS 요청을 HTTP 요청으로 전환하여 대상 그룹에게 라우팅하므로 기본 설정인 HTTP 프로토콜, 80번 포트를 유지하면 된다.

 

5단계 앞에서 만들어준 대상 그룹에 대상을 등록해준다. 연결할 EC2를 선택하고, API 서버 포트를 설정해준다. ezfarm API 서버 포트인 9090번으로 설정하였다.

완료

도메인과 로드밸런서 연결

AWS Route 53 서비스 -> 호스팅 영역 -> 래코드 생성

API 서버에 접근할 수 있는 하위 도메인, 해당 하위 도메인에 연결할 로드밸런서 설정해준다.

HTTP 요청 시 HTTPS로 리디렉션 설정

HTTP 요청일 올 경우 HTTPS 요청으로 변활할 수 있도록 설정해야한다.

AWS EC2 서비스 -> 로드밸런서 -> 도메인에 연결된 로드밸런서 선택 -> 리스너 클릭

 

HTTP의 규칙 보기/편집을 클릭해 아래와 같이 리디렉션 대상을 HTTPS 프로토콜 443포트로 설정해준다.

 

성공적으로 HTTPS 통신 방식으로 변경할 수 있었고, 프론트 서버와의 통신 문제도 해결할 수 있었다.

댓글