[AWS] Certificate Manager에서 발급 받은 인증서 로드밸런서에 붙이기
저번 글([AWS] Certificate Manager를 사용해서 인증서 생성하는 법)에서는 인증서를 AWS 내에서 발급 받았다.
사실 AWS는 정말 여러 곳에서 인증서를 붙일 수 있는데 이번 글에서는 로드 밸런서에서 붙이는 법에 대해서 알아보도록 하자.
준비물
- 서버 EC2 인스턴스
- AWS 내에서 발급된 인증서
로드밸런서에서 인증서 붙이는 법
1. EC2 Load Balancers에서 Create Load Balancer 클릭
EC2로 이동해서 Load Balancing의 Load Balancers로 들어온다
2. Application Load Balancer를 선택한다.
설명을 읽으면 대략 어떤 로드밸런서를 쓸지 알 수 있다. 사진에도 명확하게 표시되어 있다. 나에게는 HTTP, HTTPS가 그려진 Application Load Balancer가 적합하다.
Application Load Balancer에 Create 버튼을 눌러주자.
3. 로드 밸런서를 위한 설정을 해준다.
3-1. Basic Configuration
이름, 인터넷 쓸지 내부망 용인지, IP 종류를 설정한다.
3-2. Networking mapping
VPC: 사용하는 VPC가 있다면 설정한다.
Mapping: 가용 가능한 영역인데 이것은 나중에 한 영역이 마비됐을 때를 대비해서 여러 곳을 선택해주면 된다.
3-3. Security Group
사용하고 있는 것이 없다면 새로 Security Group을 만들자.
파란색으로 보이는 Create new security group을 눌러서 Security Group을 새로 생성해주자.
여기에 보면 인바운드 규칙과 아웃바운드 규칙이 있다.
양방향으로 트래픽을 제어할 수 있다. 보통 보안 그룹을 생성하면 아웃바운드 규칙은 다 허용이 되어있다. 그리고 인바운드는 아무것도 생성이 안 되어 있어서 외부에서 트래픽을 받고 싶다면 인바운드 규칙을 뚫어주면 된다.
(방화벽 설정할 때도 외부에서 들어오는 트래픽은 일단 다 차단하고 일부 허용해주는 식으로 자주했는데 그래서 이렇게 되어 있는 것 같다.)
사실 좋은 것은 인바운드와 아웃바운드 규칙을 둘 다 제어해서 정해주는 것이 아닌가..?(잘모른당)
다 되었다면 Create Security Group을 눌러 생성해준다.
생성한 후 원래 로드밸런서를 설정창으로 돌아오자. 방금 생성한 것이 안 뜨면 우측에 새로고침을 버튼을 눌러주면 뜰 것이다.
3-4. Listeners and routing
여기서 인증서를 붙여준다. Add listener를 눌러서 HTTPS를 추가하자.
그러면 아래에 인증서를 설정하는 창이 뜬다. 이때 그냥 내 인증서를 메뉴에서 눌러서 선택해주면 된다. 정말 편하다.
3-5. Target Group
라우팅을 구성할 때는 대상 그룹(Target Group)이 필요하다.
지금 위에 리스너를 추가하는 부분의 대상 그룹이 모두 빠져 있는 것을 볼 수 있다. 없다면 새 대상 그룹을 만들어 주자.
Create target group을 누른다.
원하는 형태로 그룹을 만들어준다.
나는 EC2 인스턴스로 만들 것이므로 인스턴스를 골랐다.
이때 인스턴스의 포트는 굳이 표준적인 80이나 443일 필요는 없다. LB가 해당 서버(인스턴스)와 통신할 때 사용할 것을 넣어주면 된다.
해당 하는 인스턴스를 선택하고 Include as pending below를 선택한다.
Create target group을 누르고 로드밸런서에서 선택해준다.
이제 마지막으로 확인하고 로드밸런서를 만들어주면 된다!
4. Health status 확인
대상 그룹을 만들 때 헬스체크를 어떤 루트로 할 것인지 설정했을 것이다. 그 루트로 요청을 보냈을 때 서버가 응답을 보내주는지 주기적으로 체크를 한다.
마지막으로 생성된 로드밸런서에 들어가서 잠시 기다린 후 healthy로 나오는지 확인한다.
아니면 대상 그룹이나 EC2에 잘 못 된 것이 없는지 확인하자.
5. 내 도메인을 붙여준다
생성한 로드밸런서를 눌러보면 DNS name이라는 것이 보이는데 이게 곧 로드밸런서의 도메인 주소이다.
한번 브라우저에 붙여넣어서 들어가서 잘 동작하는지 확인해보자!
잘 작동하지만 내 인증서로 등록해준 도메인이 아니니 당연히 경고창이 뜬다.
우리는 AWS가 생성해준 주소로 접속해서 쓰긴 싫다.
별도의 주소로 발급 받은 주소로 인증서를 받았다. 그 주소로 접속할 수 있도록 해보자.
5-1. Route53의 Hosted zones로 이동한다
(다른 인증 기관에서 발급 받은 경우 거기에서 하면 된다)
5-2. 로드밸런서에 붙여준 인증서의 도메인을 클릭한다
DNS name에 보면 아래에 A Record라고 나온다. A Record로 IPv4에 대한 Route traffic을 설정할 수 있다.
우리도 여기서 A Record를 생성해줄 것이다.
5-3. Create record를 누른다
subdomain이 있다면 설정해준다.
인증서에서 발급받은 도메인을 정확히 일치시켜줘야 한다.
만약 내가 api.####.com에 대해 인증서를 발급했다면 subdomain으로 api를 넣어줘야 한다.
Record type을 A로 선택한다.
Route traffic to 옆에 있는 Alias 토글을 누른다.
이 기능을 통해 잡다하게 복붙하지 않고 우리가 만든 AWS 서비스를 선택해서 레코드를 생성할 수 있다.
우리의 로드밸런서를 선택해주자.
- 바로 아래 메뉴에서 Alias to Application and Classic Load Balancer를 선택한다.
- 다음으로는 우리가 로드 밸런서를 생성한 곳인 Asia Pacific (Seoul)을 선택한다.
- 그리고 마지막 검색 메뉴에서 우리가 생성한 로드밸런서가 자동으로 추천돼서 뜰 것이다. 그걸 선택하면 된다.
Create records를 눌러서 생성한다.
* 만약 Route53이 아닌 다른 곳에서 등록하고 있다면 A Record로 로드밸런서의 주소를 값으로 넣고 생성하면 된다.
DNS에 레코드가 전파되기까지 시간이 좀 걸릴 수 있다. 커피 한잔 하고 오자..
성공하면 다음과 같이 HTTPS로 접속했을 때 경고창이 없어야 하고 AWS에서 발급받은 인증서가 보여야 한다.
썸네일 출처: Cloud server icons created by flatart_icons - Flaticon
댓글
이 글 공유하기
다른 글
-
[AWS] NestJS 프로젝트를 Code Pipeline을 사용해서 Elastic Beanstalk으로 배포하는 법
[AWS] NestJS 프로젝트를 Code Pipeline을 사용해서 Elastic Beanstalk으로 배포하는 법
2022.07.22 -
수평적 확장(Scale-Out)과 수직적 확장(Scale-Up)
수평적 확장(Scale-Out)과 수직적 확장(Scale-Up)
2022.07.18 -
[AWS] Certificate Manager를 사용해서 인증서 생성하는 법
[AWS] Certificate Manager를 사용해서 인증서 생성하는 법
2022.07.08 -
[GCP] CLI(gcloud) 맥에 설치하기
[GCP] CLI(gcloud) 맥에 설치하기
2022.05.15