[네트워크] SSL/TLS 인증서 발급 및 HTTPS 전환하기

Kim Hyen Su·2024년 12월 1일

네트워크

목록 보기
7/7
post-thumbnail

프로젝트 내 프론트엔드에서 HTTPS화 작업을 거치면서, 백엔드에서도 HTTPS로 전환하는 작업이 필요하게 되었다. 이를 위해 도메인 구매부터 HTTPS로 접속하도록 하는 과정을 포스팅 해보려고 한다.

SSL 아키텍처는 다음과 같다.

우선, 진행할 목차에 대해서 간략하게 정리하겠다.

  • 가비아 또는 기타 도메인 판매 사이트에서 도메인 구매
  • AWS Route53에서 호스팅 영역 생성
  • 도메인 구매 사이트에서 AWS의 네임서버 정보 입력
  • ACM(AWS Certificate Manager) 인증서 발급
  • Route53에 레코드 생성
  • ALB 대상 그룹 등록 및 생성
  • Route 53에서 A 타입 레코드 ALB 통해서 처리되도록 편집
  • 최종 접속 확인

이제 본격적으로 각 단계에 대해서 간략하게 설명하고 진행해보겠다.

도메인 구매

도메인 판매 사이트가 여러 곳이 있지만, 대중적이고 많이 사용하는 사이트인 가비아 에서 구매 진행 및 현재 사용 중인 EC2 서버의 public IPV4 주소를 연동했다.

💡 도메인 이란?
도메인은 웹사이트의 주소로 사용될 고유한 이름으로써, 가비아와 같은 공인된 도메인 등록 기관을 통해 원하는 도메인을 구매할 수 있다. 도메인은 전세계적으로 공유되며, 구매 시 사용 기간을 설정할 수 있다.

과정은 간단하다.

위처럼 검색창에 사용하고자 하는 도메인 명을 검색해준다.

여러 도메인 중 기호에 맞게 구매해주면 된다. 필자의 경우, 취준생이므로 가장 가격이 저렴한 도메인으로 구매를 하였다.

구매 후 마이가비아(마이페이지)에서 구매했던 도메인에 대해서 확인이 가능하다.

그 다음으로 DNS 관리 페이지로 이동하여 DNS 설정 옆에 레코드 수정을 통해 도메인과 연결될 포트 및 레코드 타입을 설정해준다.

💡 DNS 레코드 타입이란?

  • A 레코드 :
    도메인명을 해당 IP 주소로 변환하는 DNS 레코드 타입.
    예를 들면, bangbb.store 라는 도메인을 IP 주소로 매핑해준다. 이는 호스트를 @로 설정한 뒤, 값에 IP 주소를 입력해주면 된다.

  • CNAME 레코드 :
    Canonical Name을 의미하며, 한 도메인의 DNS 쿼리 결과로 다른 도메인 이름을 반환해준다. 즉, 한 도메인 이름을 다른 도메인 이름에 매핑해준다.
    예를 들면, dev.bangbb.store를 bangbb.store에 매핑하기 위해서는 CNAME에 호스트를 dev로 설정해주면 된다. 그리고, CNAME의 값으로는 도메인 주소를 입력해주면 된다. 위처럼 설정 시 dev.bangbb.store로 접속이 가능해진다.

AWS : Route53 호스팅 영역 생성

Route 53은 AWS의 DNS 웹 서비스를 의미한다. 호스팅 영역은 도메인에 대한 DNS 레코드들을 관리하기 위한 컨테이너를 의미한다.

Route 53으로 접속한 뒤, 좌측 메뉴바 상단부분에 호스팅 영역 이라는 메뉴로 들어간다. 그 다음 호스팅 영역 생성이라는 버튼을 클릭하여 호스팅을 생성해준다.

다음과 같이 도메인 이름과 유형을 퍼블릭 호스팅 영역 으로 설정해준 뒤 호스팅 영역을 생성해준다.

구매한 도메인명으로 호스팅 영역을 생성해주면, AWS에서 4개의 네임서버를 할당해준다.

가비아 : 네임서버 값 등록

위처럼 설정 버튼을 누르면 네임서버를 등록할 수 있는 페이지로 넘어가게 되고 위 AWS에서 할당해준 4개의 네임서버 값을 등록해준다.

이 과정을 통해서 DNS 관리 권한을 AWS:Route53으로 위임하게 된다.

AWS : Certificate Manager 인증서 발급

HTTPS 통신에 필요한 SSL/TLS 인증서를 발급 받는다. 이와 관련된 사전 지식은 다음의 포스팅을 참고 바란다.

ACM은 AWS에서 무료로 제공하는 인증서 관리서비스를 말한다. 인증서는 웹사이트의 신원을 보증하고 통신 시 데이터를 암호화하기 위해서 사용된다.

Certificate Manager에 접속하면 화면에 다음과 같이 인증서 요청 항목이 있으며, 이를 클릭해준다.

인증서 유형은 퍼블릭으로 설정해준 뒤 다음을 클릭해준다.

도메인 이름을 입력해준 뒤, 요청을 해주면 다음과 같이 목록에 대기중인 인증서가 생성된다.

그 다음 인증서 상세에 들어가 Route 53 레코드 생성을 통해 CNAME 레코드를 생성해준다.

얼마 지나지 않아서 인증서 상태가 발급됨으로 변경된다.

AWS : EC2 Load Balancer 대상 그룹 적용

로드 밸런서를 적용하기 위해 대상 그룹을 생성해준다.

위 메뉴로 타고 들어가면, 다음과 같이 대상 그룹 생성할 수 있는 페이지가 나온다.

이에 유형을 인스턴스 선택 및 대상 그룹명을 입력 후 다음으로 넘어간 뒤, 적용할 인스턴스를 체크해준 뒤 아래 보류중 항목을 포함하기 위한 버튼을 눌러준 뒤 그룹 생성 버튼을 눌러준다.

AWS : EC2 Load Balancer 생성

좌측 메뉴바에서 로드밸런싱 항목에서 로드 밸런서를 통해 들어간 다음 로드 밸런서 생성 버튼을 클릭해준다.

위처럼 Application Load Balancer를 선택해준다.

우선, 로드 밸런서 이름을 설정해준다.

그 다음으로 네트워크 매핑에서 가용영역 항목 선택 시, 각자의 인스턴스 가용 영역이 포함되도록 선택해준다. 최소 2개 이상 선택해줘야 하면, 잘 모를 경우에 4개 다 선택해주더라도 문제 없다.

💡 EC2 가용영역 확인
EC2 상세 페이지의 네트워킹에서 확인이 가능하다.

보안 그룹 설정 시, EC2와 동일한 보안 그룹을 사용하는 것이 좋다.

그 다음으로 리스너 및 라우터를 설정해준다. HTTP, HTTPS 프로토콜 리스너에 이전에 만들었던 대상 그룹 을 선택해준다. 만약, HTTPS 프로토콜만 사용할 경우, HTTPS 리스너만 추가해줘도 무방하다.

마지막으로 발급 받았던 SSL/TLS 인증서를 등록해준다.

AWS : Route 53 A 레코드 편집

Route 53 > 호스팅 영역 > 레코드 > A 타입 레코드 선택 및 편집

편집 시 별칭을 활성화 해준 뒤, Application/Classic Load Balancer에 대한 별칭 선택 및 기존에 생성했던 ALB를 선택해준 뒤 저장해준다.

접속 확인


다음과 같이 정상적으로 https로 접속된 것을 확인할 수 있다.

profile
백엔드 서버 엔지니어

0개의 댓글