티스토리 뷰
ACM(Amazon Certification Manager) 인증서를 사용해서 현재 운용중인 EC2를 HTTPS 인증을 하기 위해 이전에 작성한 글에서는 Fargate를 사용할 때를 주로 설명했었습니다.
ACM을 발급하는 것은 위 글에 자세히 나와있습니다. 이제 발급된 ACM 인증서를 가지고 EC2에 연결하는 방법을 알아보려 합니다.
기본적으로 EC2를 사용할 때는 nginx를 설치해주는 것이 좋습니다.
1. nginx 설치
ubuntu 와 CentOS의 경우는 아래의 글을 참조하여 설치해주시면 됩니다.
Amazon Linux 2 서버를 사용하시는 경우는 아래 명령어를 사용하시면 됩니다.
$ sudo yum update -y
$ sudo yum install nginx
이제 서버의 설정은 끝입니다.
2. 대상 그룹 정하기
이제 다음으로 서버가 정상적으로 운영중인지 헬스 체크를 하기 위한 URL을 안 상태로 대상 그룹 설정을 하여야 합니다. 대상 그룹은 주기적으로 헬스 체크를 위해 요청에 대한 설정을 하는 곳입니다.
그리고 인스턴스와 대상 그룹 이름을 자유롭게 설정해줍니다.
아래 헬스 체크는 Actuator 를 사용하는 경우 '/actuator/health' 경로를, (properties 설정에 따라 다를수도 있습니다.) 그 외 웹 사이트에서 rootpath가 존재하는 경우 '/' 을 입력합니다.
2-1. Register targets
다음으로 넘어가는 경우 대상 그룹을 설정하기 위한 EC2 인스턴스를 선택하는 화면이 나옵니다. 여기서 해당 EC2를 선택한 후, 포트의 경우 애플리케이션의 포트번호를 입력합니다. Spring 의 경우 8080, Node.js 의 경우 3000이 기본값입니다.
포트 라우팅을 하는 경우 (예를 들어 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 레코드를 생성해주어야 합니다.
서브도메인과 다른 내용을 입력 후 별칭을 토글시켜주면 트래픽 라우팅 대상을 설정할 수 있습니다. 여기서 아래와 같이 선택해줍니다.
- Application/Classic Load Balancer에 대한 별칭
- 아시아 태평양(서울) [ap-northeast-2]
- 3에서 설정한 로드 밸런서
선택이 다 되셨다면 레코드 생성을 한 후, 도메인을 치고 들어가 https 옆에 인증서가 잘 인식되었는지 확인합니다.
결론
오늘은 이렇게 AWS만을 이용하여 HTTPS 설정하는 방법을 소개드렸습니다. 저도 진행하면서 어디 부분이 잘못되었고, 일부 페이지는 http로 표시되는 내용이 많았지만 최종적으로 정리를 하고 보니 조금 오래 걸리긴 했습니다. 보안 인증된 홈페이지를 운영하기 위한 개발자들 모두 힘내십쇼 💪
'Server' 카테고리의 다른 글
[AWS] Error message: Unable to execute HTTP request: Connect to email.ap-northeast-2.amazonaws.com 에러 해결 로그 (1) | 2023.05.24 |
---|---|
Command Line Interface에서 프로젝트의 버전을 확인하는 방법 (0) | 2023.04.29 |
[MySQL] Insert Select 로 한 번에 쿼리 수행하기 (0) | 2023.04.27 |
[AWS] ECS 시작부터 모아보기 (2) | 2023.04.23 |
[AWS] ECS 개정된 Task로 업데이트 하기 (2) | 2023.04.18 |
[AWS] CloudWatch 로 ECS Task 로그 확인하기 (0) | 2023.04.17 |