시작
앞서 포스팅된 AWS에 도메인을 연결하는 과정을 진행한 후 기존의 서비스와 같이 HTTPS를 적용하기 위해 작성되었습니다.
기본적으로 AWS에서 EC2 인스턴스로 서버를 만들게 되면, SSL보안이 적용되지 않은 HTTP가 설정됩니다.
실제로 서비스를 하기 위해서는 SSL보안 설정이 매우 기본이기 때문에, SSL을 적용시키는 방법을 알아보겠습니다.
설명
AWS의 EC2를 활용해 서버를 배포하려 할 때 로드밸런서를 사용하는 이유
- 보안 강화:
로드 밸런서를 사용하면, AWS의 ACM(AWS Certificate Manager)를 통해 SSL/TLS 인증서를 쉽게 관리하고,
그 인증서를 로드 밸런서에 적용할 수 있습니다. 이를 통해 데이터 전송 중 보안이 강화됩니다. - 확장성 향상:
로드 밸런서를 사용하면, 시스템의 확장성이 향상됩니다.
인스턴스가 추가되거나 제거될 때마다 로드 밸런서를 수동으로 업데이트할 필요가 없습니다.
이를 통해 트래픽 변동에 따른 자동 확장(Auto Scaling)이 가능해집니다. - 고가용성 보장:
로드 밸런서를 사용하면 시스템의 고가용성이 보장됩니다.
만약 하나의 인스턴스가 실패하더라도, 로드 밸런서는 자동으로 다른 인스턴스로 트래픽을 분산시킵니다.
이렇게 함으로써 서비스 중단 시간을 최소화할 수 있습니다. - 부하 분산:
로드 밸런서는 이름에서 알 수 있듯이 네트워크 트래픽을 여러 서버 인스턴스로 분산시키는 역할을 합니다.
이렇게 하면 단일 인스턴스에 대한 부하가 줄어들고, 전체 시스템 성능이 향상됩니다.
그러나, 로드 밸런서를 사용하지 않고 직접 SSL/TLS 인증서를 EC2 인스턴스에 설치하고 관리하는 것도 가능합니다.
이 경우, 인증서의 설치, 관리, 갱신 등을 직접 처리해야 하며, 이는 복잡하고 시간이 많이 소요될 수 있습니다.
따라서 대부분의 경우, 로드 밸런서를 사용하여 이러한 작업을 단순화하는 것이 좋습니다.
인증서 발급
가장 먼저 인증서를 발급해야 합니다.
이는 AWS의 "Certificate Manager" 서비스에서 가능합니다.
AWS에서 검색창에 Certificate Manager를 검색하게 되면
해당 화면이 보이게되고 그중 인증서 요청을 클릭하시면 인증서 발급 화면으로 넘어가게 됩니다.
첫 화면에서 저희는 변경 사항이 없으므로 다음을 눌러주시고
해당 화면에 인증서를 적용할 domain을 입력해 주시면 됩니다.
저희의 서비스는 백엔드, 프론트엔드에 적용할 모든 주소를 포함시킬 것이므로 와일드카드인 *를 앞에 붙여서 입력하였습니다.
*. <도메인 이름> 예시 : *.test.com
해당 설명은 정보를 클릭하면 아래처럼 알 수 있습니다.
완전히 정규화된 도메인 이름(FQDN)
완전히 정규화된 도메인 이름(FQDN)은 인터넷상의 조직 또는 개인의 고유한 이름입니다.
.com 또는 .org와 같은 최상위 도메인 확장명이 마지막에 위치합니다.
SSL/TLS 인증서로 보호하려는 사이트의 정규 도메인 이름을 입력합니다.
(예: www.example.com).
동일한 도메인으로 여러 사이트를 보호하기 위해 와일드카드 인증서를 요청하려면 별표(*)를 사용합니다.
예를 들어, *.example.com은 www.example.com, site.example.com 및 images.example.com을 보호합니다.
이후 다른 설정을 변경하지 않고 다음으로 넘어가면
위의 사진처럼 검증 대기 중 상태인 도메인이 표시되는 것을 확인할 수 있습니다.
레코드 생성 및 검증
가장 좌측의 인증서 ID 링크를 타고 넘어가게 되면 인증서의 상세 정보를 볼 수 있는데
그중 Route 53에서 레코드 생성 버튼을 클릭해 줍니다.
그 후 위의 레코드 생성 버튼을 누르고 잠시 기다리게 되면 아래의 이미지처럼 발급됨으로 바뀌게 됩니다.
대상 그룹 생성
로드 밸런서에 적용하기 위해서 대상 그룹을 만들어 줘야 합니다.
대상 그룹은 EC2 서비스의
해당 위치에 있습니다.
Create target group 버튼을 클릭하여
기본 설정은 전부 그대로 두시고 아래의 Target group name만 작성해 주시면 됩니다.
이후 다음 버튼을 누르시면 Register targets라는 단계로 넘어가게 되는데,
자신의 인스턴스를 선택하고 아래 사진처럼 80 포트 번호가 잘 입력되어있다면
Include as pending below 버튼을 클릭해 주시면 됩니다.
그 후 Create target group 버튼으로 마무리해주시면 됩니다.
로드밸런서 생성
이후 아까 보셨던 로드밸런서 카테고리로 넘어가서
Create load balancer 버튼을 누릅니다.
저희는 3개의 유형중 애플리케이션 로드 밸런서를 선택해 줍니다.
그리고 이름을 입력합니다.
그 후 Mappings에서 자신의 인스턴스에 맞는 리전이 포함된 2개 이상의 항목을 선택해 줍니다.
이후 Security groups에서 인스턴스의 보안 그룹을 적용해 줍니다.
해당 부분에서는 Add listener 버튼을 클릭하여 HTTP와 HTTPS의 포트인 80, 443을 추가하고 우측의 forward to에서 타깃 그룹을 적용해 줍니다.
마지막으로 해당 부분에서 ACM인증서를 적용해 주게 되면 SSL보안을 담당해 주게 되므로 끝이 납니다.
그 후 대략 5~8분 정도 기다리게 되면
위의 상태처럼 Provisioning에서 Activate로 변경 되게 됩니다.
도메인 설정
이제 도메인 설정을 하기 위해 Route53으로 돌아갑니다.
초반에 설정하셨던 도메인으로 들어가서 레코드 생성 버튼을 눌러 레코드를 새로 생성합니다.
해당 정의 부분에서 레코드 이름을 설정하게 되시는데 저희는
Certificate Manager에서 와일드카드를 사용했으므로 원하시는 해당 문자를 넣어 주시면 됩니다.
저희는 fastapi와 springboot의 api를 사용했기에
대략 예시로 fastapi.domin.com와 api.domain.com의 형태로 작성하겠습니다.
그 후 레코드 유형의 A타입은 그대로 사용합니다.
유형의 대략적인 설명은 아래와 같습니다.
- A : 호스트명을 IPv4에 연결
- AAAA : 호스트명을 IPv6에 연결
- CNAME : 호스트명을 다른 호스트명에 연결
- NS : 호스팅 존에 대한 Name Server 정보
별칭 스위치를 켜주시면
해당 사진처럼 변하게 되는데 여기서
Application/Classic Load Balancer에 대한 별칭을 선택해 주시고
리전은 인스턴스의 리전을, 로드밸런서 선택에서 아까 만들었던 로드 밸런스를 적용해 주면 끝입니다.
'배운것들 정리 > AWS' 카테고리의 다른 글
[AWS] Route 53 AWS 외부 도메인 연결 (1) | 2023.07.09 |
---|---|
[AWS] RDS 다른 계정으로 이전 (1) | 2023.07.09 |
[AWS] 다른 AWS 계정으로 EC2 인스턴스 이전하는 방법 (2) | 2023.07.09 |