사이드 프로젝트를 수행 중, 클라이언트단에서 서버로 api를 요청할 때 쿠키에 JWT 토큰을 함께 담아보내는데, 이를 주고받기 위해 SSL인증을 적용하게 되었다.
다만, SSL인증시 DNS 등록이 선행되어야해서 함께 등록하게 되었다.
😭 DNS 등록 2000원.. 아깝지 않다!
해당 부분은 구매를 완료한 시점이라서 생략하겠습니다.
DNS와 AWS Route53 레코드를 연결해야 한다.
NS레코드의 4개의 도메인 주소를 도메인 구매처(필자는 가비아)에 등록해야합니다.

여기까지하면 DNS 등록 절차는 끝났습니다.
이제 AWS Certificate Manager를 통해 SSL 인증서를 발급받겠습니다.

완전히 정규화된 도메인 이름에 구매한 DNS 도메인을 입력하고 요청하면 시간이 지나, SSL 인증서가 발급됩니다.
AWS에서 SSL 인증을 적용하는 방법이 2가지라고 들었는데, 그중 저는 ALB에 SSL인증서를 적용해 80, 443 포트를 통해 접근 요청 url을 포트포워딩하는 방식을 적용했습니다.
ALB가 포트포워딩할 대상그룹 생성 (EC2 인스턴스)
EC2 -> 왼쪽 하단의 대상 그룹을 선택해 생성합니다.

저는 톰캣 Default 포트인 8080을 적용해서 대상그룹을 매핑했습니다.
이때, 상태 검사 경로를 설정해줘야합니다.
ALB가 Health Check를 하는데 경로에 request를 보내 200을 response받아야 health check가 통과되기 때문에
@Controller
public class HealthController(){ //예시 코드
@GetMapping("health-check-url)
public String check(){
return "";
}
}
많은 분들이 이렇게 임시로 컨트롤러 계층을 만들어 해당 경로를 설정하는 것 같습니다.
이제 핵심인 Application Load Balancer를 생성해 대상그룹에 매핑하겠습니다.

네트워크 매핑에서 서브넷을 최소 2개 이상 설정해야합니다.
보안그룹은 default 보안그룹을 사용해도 되는데, 80, 443 인바운드 정책을 열어줘야합니다.

대상그룹을 선택하고, (저는 생성 이후 캡쳐해서.. 구두로 설명하겠습니다)

인증서 선택을 보면, 아까 전에 Certificate Manger에서 발급받은 SSL인증서를 선택할 수 있습니다.
거의 다왔습니다..!
HTTP 리스너 규칙에서 대상그룹으로 포트포워딩하는 규칙을 추가해줍니다.

위 리스너 규칙 설정을 통해 8080으로 들어오는 요청을 443 즉, http -> https로 리다이렉션 시켜줄 수 있습니다.
다음으로 HTTPS 리스너 규칙에서 ALB가 EC2 인스턴스로 요청을 보내주는 규칙을 추가합니다.

마지막으로, 등록한 ALB를 Route53 서비스로 가서 레코드 등록해줍니다.

A레코드에서 별칭탭에 설정한 ALB를 추가하면 끝입니다!
이렇게 해서 DNS, SSL적용의 대여정이 끝났습니다 😀
여담이지만, 3일간의 Route 53 사용료가 대략 3000원정도 나왔습니다..
쿠키 정책
FE와 BE가 각기 다른환경에서 배포가 수행되었기 때문에, 인증을 적용하기 위해서 쿠키에 JWT토큰을 발급하고, 이를 통해 인가를 수행하도록 프로젝트를 구상했다.
즉, cross domain인 상황에서 CORS정책으로 쿠키같은 민감한 정보의 교환이 까다로워 다른 도메인에 쿠키를 설정해주는 부분을 추가했다.

잘보고갑니다!