프론트 서버와 백엔드 서버가 HTTPS와 HTTP를 같이 사용해서 오류가 발생한 적이 있었다.
이를 해결해주기 위해서, 백엔드 서버에도 HTTPS를 적용시키려고 한다.
이러한 과정에 대한 내용을 정리해보는 시간을 가져보겠다.
순서
- Route 53에서 도메인 구매
- 구매한 도메인에 대해 SSL/TLS 인증서 발급
- ELB를 생성하여 HTTPS 리스너 설정
- 생성한 ELB에 대해 DNS 레코드 등록
Route 53 도메인 구매
- 도메인을 구매하여 다음과 같이 두 개의 레코드가 등록돼있는 모습을 볼 수 있다.
ACM을 통해 SSL/TLS 인증서 발급
- 인증서 상세보기에서
Create records in Route 53
을 통해서 레코드 등록해주기
- Route 53에 인증서에 대한 레코드가 등록된 모습을 볼 수 있다.
EC2로 대신 요청을 보내주는 ELB 설정
- EC2로 HTTP 요청을 HTTPS로 리다이렉트를 해주기 위해선, ELB를 거쳐야만 한다.
- 또는, EC2 내부적으로 Nginx와 같이 reverse proxy를 통해서 진행해도 된다.
-
ELB를 생성한다.
- ELB는 HTTP와 HTTPS에 대한 요청만 받도록 인바운드 규칙을 설정한다.
- 스프링 서버의 기본 포트는 8080이기에, 타겟 그룹을 생성할 때 라우팅 포트를 8080으로 설정해야 한다.
-
ELB에 대해 리스너를 설정한다.
-
HTTPS는 위에서 생성한 타겟 그룹으로 전달시키게 설정
-
위에서 발급한 인증서와 함께 HTTPS 리스너에 설정
-
HTTP는 HTTPS로 리디렉션을 보내도록 설정
- 기존의 EC2에 적용된 보안 그룹에서, HTTP와 HTTPS에 대한 인바운드 규칙을 삭제한다.
- 대신, ELB가 EC2에 요청을 보낼 수 있도록 인바운드 규칙을 설정한다.
Route 53에서 ELB에 대한 DNS 레코드 생성
- 구매한 도메인과 ELB를 연결
참고
- 도메인 구매 시, 시간이 대략 20분정도 걸림