티스토리 뷰

반응형

ACM(Amazon Certification Manager) 인증서를 사용해서 현재 운용중인 EC2를 HTTPS 인증을 하기 위해 이전에 작성한 글에서는 Fargate를 사용할 때를 주로 설명했었습니다. 

https://abbo.tistory.com/435

 

[AWS] ECS HTTPS 적용하기

ECS에서 HTTP는 로드밸런서에 걸려있는 리스너들이 작동하면서 변경됩니다. HTTP로 서버를 올리는 것은 어렵지 않지만, HTTPS 인증을 하기 위해서는 아래처럼 작업이 필요합니다. 도메인 준비 (Route 5

abbo.tistory.com

 

ACM을 발급하는 것은 위 글에 자세히 나와있습니다. 이제 발급된 ACM 인증서를 가지고 EC2에 연결하는 방법을 알아보려 합니다. 

기본적으로 EC2를 사용할 때는 nginx를 설치해주는 것이 좋습니다. 

 

1. nginx 설치

ubuntu 와 CentOS의 경우는 아래의 글을 참조하여 설치해주시면 됩니다.

https://abbo.tistory.com/170

 

Nginx 설치와 기본 환경 설정

웹서버를 사용할 때 apache와 더불어 nginx 를 많이 사용합니다. 읽을 때는 엔진엑스라고 읽게 되는데, 이번 글에서는 nginx를 설치하고 환경 설정을 하는 방법을 작성해보려 합니다. 웹 서버 웹 서버

abbo.tistory.com

Amazon Linux 2 서버를 사용하시는 경우는 아래 명령어를 사용하시면 됩니다. 

$ sudo yum update -y
$ sudo yum install nginx

이제 서버의 설정은 끝입니다.

 

2. 대상 그룹 정하기

이제 다음으로 서버가 정상적으로 운영중인지 헬스 체크를 하기 위한 URL을 안 상태로 대상 그룹 설정을 하여야 합니다. 대상 그룹은 주기적으로 헬스 체크를 위해 요청에 대한 설정을 하는 곳입니다. 

Create target group 을 눌러 대상 그룹을 추가합니다

 

그리고 인스턴스와 대상 그룹 이름을 자유롭게 설정해줍니다.

 

아래 헬스 체크는 Actuator 를 사용하는 경우 '/actuator/health' 경로를, (properties 설정에 따라 다를수도 있습니다.) 그 외 웹 사이트에서 rootpath가 존재하는 경우 '/' 을 입력합니다. 

 

2-1. Register targets

 

다음으로 넘어가는 경우 대상 그룹을 설정하기 위한 EC2 인스턴스를 선택하는 화면이 나옵니다. 여기서 해당 EC2를 선택한 후, 포트의 경우 애플리케이션의 포트번호를 입력합니다. Spring 의 경우 8080, Node.js 의 경우 3000이 기본값입니다. 

기본이 80이고 여기에 3000을 넣어줍니다. 다 되면 Include as pending below 버튼 클릭

 

포트 라우팅을 하는 경우 (예를 들어 8080, 8081을 Docker compose 하는 경우) 두 개 모두 추가해줍니다. 다 되셨다면 Create target group을 누릅니다.

 

3. 로드 밸런서 설정

이제 로드 밸런서를 만들 차례입니다. EC2 > Load Balancers 화면으로 들어가 'Create load balancer' 버튼을 누릅니다. 그리고 Application Load Balancer 아래엥 Create 를 누릅니다. 

 

그리고 로드 밸런서명을 설정하고, VPC 가용영역, 보안그룹을 설정합니다. 

 

그리고 여기서 아까 설정한 대상 그룹을 추가합니다. 

 

그리고 Add listener를 눌러 리스너를 하나 더 추가합니다. 이번에는 HTTP가 아닌 HTTPS를 추가합니다. 대상 그룹은 같은 것을 사용합니다.

여기서는 사전에 등록해둔 ACM 인증서를 선택합니다. 도메인 체크를 꼭 해주신 후 Create load balancer 버튼을 눌러 로드밸런서를 생성해줍니다.

 

이제 리스너까지 연결이 된 상태로 로드밸런서가 생성되었다면, 80 포트로 연결되는 리스너에서 다음과 같이 수정을 진행해줍니다. 

해당 내용은 80포트로(HTTP) 넘어가는 트래픽을 리다이렉션시켜 443번 포트로(HTTPS)로 연결시키는 작업입니다. 이제 모든 준비가 끝났습니다. 

 

4. Route53 

이제 해당 도메인에서 A 레코드를 생성해주어야 합니다. 

서브도메인과 다른 내용을 입력 후 별칭을 토글시켜주면 트래픽 라우팅 대상을 설정할 수 있습니다. 여기서 아래와 같이 선택해줍니다.

  1. Application/Classic Load Balancer에 대한 별칭
  2. 아시아 태평양(서울) [ap-northeast-2]
  3. 3에서 설정한 로드 밸런서

 

선택이 다 되셨다면 레코드 생성을 한 후, 도메인을 치고 들어가 https 옆에 인증서가 잘 인식되었는지 확인합니다. 

 

결론

오늘은 이렇게 AWS만을 이용하여 HTTPS 설정하는 방법을 소개드렸습니다. 저도 진행하면서 어디 부분이 잘못되었고, 일부 페이지는 http로 표시되는 내용이 많았지만 최종적으로 정리를 하고 보니 조금 오래 걸리긴 했습니다. 보안 인증된 홈페이지를 운영하기 위한 개발자들 모두 힘내십쇼 💪

반응형
댓글
공지사항