스프링부트 배포 HTTPS로 변경하기

2025. 4. 2. 17:56AWS

이전에 백엔드 배포를 마치고 배포된 리액트 앱을 브라우저로 로그인시도 했지만 실패했다.

이유를 찾아보니 프론트는 HTTPS로 배포되었지만 백은 아직 HTTP인 상황

스프링부트도 HTTPS 변경이 필요했다.

 

1. ACM으로부터 SSL 인증서 발급받기

https://1000end.tistory.com/19

 

리액트 AWS S3 + CloudFront로 배포하기 - 2. 도메인 구매 + Route 53 + ACM 설정

이전에 S3와 CloudFront 설정을 마쳐주었다.2025.03.31 - [AWS] - 리액트 AWS S3 + CloudFront로 배포하기 - 1. S3, CloudFront 설정 리액트 AWS S3 + CloudFront로 배포하기 - 1. S3, CloudFront 설정프로젝트가 슬슬 끝나가서

1000end.tistory.com

 

이전에 내가 올린 글을 보고 생성해주길 바란다!

그런데 여기서 의문인점 이전에 발급받았는데 왜 또 발급받아야하나 라고 의문이 들었는데

CloudFront는 버지니아에서만 만들수 있어서 CloudeFront 에서 ACM을 누르면 자동으로 버지니아로 가진다.

그래서 현재 서울 리젼에는 인증서가 없는 것.

 

이거 인증서 만들때 도메인 이름이랑 똑같이 해야되는 것같다.. 앞에 api붙여서 만들었더니 상태가 계속 대기가 뜬다..

 

 

2.  ELB - 대상그룹 만들기

대상그룹이란 말그대로 로드밸런서가 트래픽을 전송할 대상의 그룹이다.

 

 

EC2 > 대상 그룹 > 대상 그룹 생성 선택

 

 

인스턴스로 트래픽을 전송할 것이니 인스턴스 선택

 

 

대상 그룹의 이름을 설정해준다.

프로토콜과 포트는 HTTP 8080으로 설정해준다. EC2 Spring Boot 서버는 HTTP:8080로 SSL없이 동작하고 있기 때문이다.

 

  • 클라이언트 → ELB:  HTTPS (보안)
  • ELB → EC2:  HTTP (내부망이니까 안전하고 효율적)

 

 

 

로드밸런서는 대상그룹의 상태 체크도 해준다.

상태 검사 경로에 healthCheck API가 있다면 입력해주면 된다.

로드밸런서는 어플리케이션의 엔드포인트로 요청을 보내 헬스체크를 한 뒤 헬스체크가 실패하면 해당 인스턴스엔 더이상 트래픽을 보내지 않는다.

 

 

내 어플리케이션은 8080번 포트를 리스닝하고 있으므로 8080번으로 대상을 설정한다.

 

 

이렇게 대상 그룹 생성을 완료한다.

 

 

3. ELB - 로드밸런서 만들기

AWS가 제공하는 트래픽 분산 서비스로 백엔드 서버 앞단에서 HTTPS → HTTP 로 요청을 전달해줄 수 있다. (리버스 프록시처럼 동작)

 

 

EC2 > 로드밸런서 > 로드 밸런서 생성 선택

 

 

Application Load Balancer 생성 선택

 

 

로드밸런서 이름 지정

 

 

VPN을 선택하고 서브넷을 할당해준다.

 

 

HTTPS연결이 목적이므로 로드밸런서는 HTTPS로만 연결할 것이고, 보안그룹에서 443포트를 열어주고 로드밸런서는 443 포트만 리스닝하게 한다.

 

 

보안 리스너에서 아까 받은 ACM SSL인증서를 선택해준다.

 

이렇게 요약으로 확인한번 하고 로드밸런서 생성 선택해서 완료해준다.

 

 

프로비저닝 중이 완료될 때까지 기다려준다. 

 

 

프로비저닝이 완료가 되면 대상 그룹도 확인해준다. 원래는 사용되지 않음이였는데 정상으로 바뀐게 확인될 것이다.

그리고 EC2에 아웃바운드 HTTPS 443 포트도 지정해주자!

 

4. Route53에서 레코드 생성하기

Route53에 와서 기존에 만들어서 연결해뒀던 도메인에 레코드를 생성해준다.

 

그럼 이제 모든 준비가 다되었다!

 

public IP로 HTTP healthCheck 요청을 보냈을 때 잘되는지 먼저 확인해주자

 

 

그 다음 SSL인증을 받은 도메인으로도 healthCheck 요청 확인해주기

 

 

그 다음 연결된 프론트에서 API를 요청했을 때 잘 동작하는지 확인한다.