Route53 + ACM을 이용하여 무료 도메인과 HTTPS SSL 인증서 설정해보기

2020.10.26

안녕하세요! 클래스메소드 신입 엔지니어 정하은입니다🐣

여러모로 일이 겹쳐 오랫동안 블로그를 쓰지 못했었는데, 드디어 묵히고 묵히던 글을 공개할 수 있어 눈물이 앞을 가리네요ㅠㅠ

이제 드디어 웹사이트 배포 시리즈의 마지막을 장식할 도메인 등록만이 남았는데요. 무료 도메인 사이트에서 도메인을 취득하여 Route53에 설정하고, ACM을 통해 HTTPS 인증서를 설정하는 부분까지 다루는 내용으로 정리해보았습니다.

이번 글은 이전의 블로그들과 달리 CLI이 아닌 콘솔을 이용해서 진행하는 과정으로 다루고 있으니 CLI 환경이 익숙하지 않으신 분께도 참고가 되었으면 합니다!

지난 블로그를 읽어보시지 않으신 분들은 아래의 링크를 통해 읽어주신다면 감사드려요.

(이번에 사용한 리소스는 이미 삭제했기 때문에 여러분이 도메인 주소를 검색하셔도 아무것도 나오지 않아요! 진짜 Developers.IO 블로그 사이트는 아래의 링크에서 타고 들어가시면 나오니 많은 방문 부탁드립니다😌)

Route53을 사용하는 이유는?

지난 블로그에서 Cloudfront OAI 설정까지 마치고, CloudFront 도메인으로만 접속이 가능한 것까지 확인했었는데요. 도메인 설정도 되어있고, 접속하는데는 별 문제 없을 것 같지만 사실 아직 할 일이 남아있답니다...!

CloudFront 도메인을 보셨을 때 혹시 불편하다고 생각하신 적 없으신가요? 저는 여러 알파벳으로 불규칙하게 조합되어 있다보니 외우기 어려워 계속 복사 붙여넣기를 해서 확인을 했었는데.. 더이상 이렇게 쓸 수는 없다고 생각했기에 도메인을 등록하기 위해서 Route53이라는 서비스를 사용하게 됩니다😢

사실 이 이유라면 그냥 일반 DNS를 사용해도 되는거 아닌가요라고 할 수 있겠지만, Route53에는 장점이 더 있답니다.

  • 모니터링 가능
    • 도메인명 또는 IP 주소와 포트를 입력하여 모니터링이 가능합니다.
    • CloudWatch Alarm를 이용해서 알림을 보낼 수도 있어요.
  • 로드 밸런싱 가능
    • 지역 상관없이 트래픽이 많아질 시에 트래픽 분산하는 기능을 제공해요.
  • 저렴한 비용
    • 도메인 당 0.5달러 + 100만 쿼리당 0.4달러(최초 10억쿼리까지만 / 10억쿼리 넘어가면 0.2달러씩) 이기 때문에 위의 기능이 있는 걸 미루어 볼 때 저렴한 편에 속합니다.

DNS 설정

그럼 이제 무료 도메인을 발급하여 Route53에 설정해보는 것까지 진행해보겠습니다!

이번 과정에서는 금전적인 부담을 덜기 위해 무료 도메인을 사용했는데, 여유가 되신다면 AWS에서 도메인을 구매하셔서 이 과정을 스킵하셔도 무관합니다.

freenom 사이트에서 도메인 발급하기

freenom에 접속하시면 바로 지정할 도메인명을 입력할 수 있는 칸이 보이실텐데요. 칸에 입력하신 뒤, 'Check Availability'를 눌러주세요.

그러면 tk, ml, ga 등으로 끝나는 무료 도메인들이 나오는 걸 확인하실 수 있습니다. 아래로 내리시면 유료인 것들도 보이지만, 위쪽에 있는 무료 도메인 중 하나를 선택해주세요.

'Get it now!' 버튼을 누르신 뒤, 위쪽에 나타나는 'Checkout' 버튼을 눌러주세요.

그러면 위와 같은 표가 나오는데 'Period' 에서 기간을 설정해주세요. 12개월까지는 무료이니 그 안으로 여러분께서 원하시는 개월 수를 선택해주시고 'Continue' 버튼을 눌러 다음으로 넘어가주세요.

그럼 결제할 목록이 나오게 되는데, 0달러이기 때문에 결제수단 등록은 당연히 필요없겠죠?

하지만 딱 한 가지, 아래쪽에 보이듯이 회원가입이 필요하답니다..ㅠㅠ 그래서 등록할 이메일 주소를 입력하시고 아래의 'Verify My Email Address' 버튼을 눌러주세요.

그러면 입력하신 이메일로 인증 메일을 보냈다고 뜨니, 메일함으로 가셔서 해당 링크로 재접속합니다.

링크를 눌러 들어가시면 정보 입력칸이 나오는데, 국가만 확실히 대한민국으로 설정해주신다면 그 외의 항목들은 임의로 입력하셔도 무관합니다.

다음으로 넘어가시면 도메인이 발급되었다는 문구가 나오는데요. 상단 메뉴에서 My Domains를 누르셔도 위와 같이 목록을 확인하실 수 있답니다.

Route53 Hosted Zone 생성하기

Route53 콘솔에서 'Create Hosted Zone' 버튼을 클릭합니다.

Domain Name에는 freenom에서 발급받은 도메인 이름을 입력하고, Description은 재량으로 입력해주세요.

Type은 Public Hosted Zone으로 그대로 설정하고, Tag는 따로 추가하지 않아도 괜찮으니 아래의 'Create Hosted Zone'을 클릭하여 호스팅 영역을 생성해줄게요.

freenom에서 DNS 설정하기

다시 freenom 사이트로 돌아가 도메인 주소의 DNS 설정을 변경해주도록 할게요.

'My Domain'에서 'Manage Domain' 버튼을 눌러주세요.

'Management Tools'의 'Nameservers'를 보시면 'Use default nameservers'를 사용하고 있는 것을 확인하실 수 있을거에요. 이것을 AWS에 연결된 DNS로 바꾸기 위해 아래의 'Use custom nameservers'를 선택합니다.

nameserver의 빈칸들을 채워주기 위해 Route53에서 방금 생성했던 hosted zone을 클릭해서 세부 정보 페이지로 갈게요.

아래쪽을 보시면 레코드 정보가 나오는데 여기서 NS 타입의 Value값들을 하나하나 복사해서 freenom의 nameserver에 붙여넣습니다.

붙여넣기가 다 됬다면 'Change Nameservers' 버튼을 눌러 변경 사항을 반영해주세요.

ACM로 인증서 받기

DNS 설정을 마쳤으니 이제 HTTPS 설정을 위한 인증서를 받아보도록 할게요.

ACM (AWS Certification Manager) 을 검색하여 ACM 콘솔로 이동해주세요.

그리고 한 가지 주의하셔야 할 점이 있는데 리전을 us-east-1으로 설정하셔야합니다!! 그 이유는 나중에 뒤에서 설명드릴게요.

ACM 콘솔로 가면, Provision Certification과 Private certificate authority라는게 나옵니다. 저희는 웹사이트를 위한 증명서를 받아야 하기 때문에 Provision Certification을 선택할게요.

'Request a public certificate'라는 항목에 선택되어 있으니 그대로 다음으로 넘어갈게요.

도메인 입력란이 나오는데, *.xxxx.tk, xxxx.tk 의 형식으로 두 개를 추가해주세요.

다음으로 넘어가면, 인증서를 받기 위한 방법으로 DNS validation과 Email validation이 있다고 나오는데요. 둘 중에 어떤 방법을 사용하더라도 인증서를 받을 수는 있지만 DNS validation이 훨씬 간단하기 때문에 이쪽을 선택해주세요!

그럼 Email validaion이 없어도 되지 않느냐라고 생각하실 수 있겠지만, DNS validation은 Route53을 DNS로 사용할 경우에만 선택 가능한 옵션이랍니다. 저희는 앞서 DNS 설정을 해두었었기 때문에 가능하지만, 만약 freenom에서 기본으로 설정된 DNS를 그대로 사용했더라면 불가능했었겠죠?

(Email validation은 손이 은근 많이 가기 때문에 여유가 된다면 따로 한 번 정리해보고 싶네요..;ㅎㅎ)

다음으로 넘어가면 Tag와 Value를 입력하는 칸이 나오는데, 그냥 넘어가셔도 무관합니다.

마지막으로 Review에서 정보를 확인하신 뒤, 'Confirm and request' 버튼을 눌러 인증서 요청을 할게요.

그럼 Pending validation 이라는 문구가 나오는데, 3분 정도 기다리니 금방 Success로 바뀌었어요. (30분 이상 걸릴 수 있다고 하니 조금 느리더라도 인내심을 갖고 기다려주세요!)

CloudFront 설정 변경하기

이제 여러분께서 설정하신 도메인과 인증서를 사용하기 위해 CloudFront의 설정을 변경해봅시다.

지난 번에 만들었던 CloudFront 도메인을 선택하여 상세 페이지로 넘어가  'edit' 버튼을 눌러주세요.

설정 항목들 중 Alternate Domain Names에 도메인 주소를 입력하고, SSL Certification을 Custom SSL Certificate으로 선택을 변경해주세요.

그리고 Custom SSL Certification 아래의 입력칸을 클릭해 앞서 만들었던 인증서를 선택해주세요.

아까 인증서를 받기위해, us-east-1 리전을 선택하라고 했었는데요. CloudFront에서는 us-east-1이 기본 리전으로 잡혀있어(...) 타 리전에서 생성한 인증서는 가져올 수 없기 떄문입니다ㅠㅠ 조금 번거롭기는하지만 그 부분만 주의해주세요!

확인해보기

설정을 모두 마쳤으니 남은 건 확인하는 것뿐..!! 브라우저에서 https://도메인주소 를 입력하여 접속해볼게요.

접속을 해보니 이전과는 달리 주소창 옆에 자물쇠 모양이 나타나네요!

클릭해보면 Amazon에서 발급한 인증서라는 것을 확인할 수 있으며 세부적인 정보도 볼 수 있답니다.  (업무용 PC라 언어 설정이 일본어로 된 점 양해 부탁드립니다😅)

마무리하며

드디어 오랜 기간 끌어온 시리즈를 마무리하게 되었네요!

현재는 다음 발표를 위한 준비나 시험 공부 때문에 블로그 쓰는데 시간 할애를 많이 하지 못해 아쉬움이 많아요..ㅠㅠ 이번달 목표를 달성하고 싶었는데 벌써 10월말이 되어버렸으니 다음달은 더 분발해야겠다는 다짐으로 열심히하겠습니다!!

점점 날씨가 추워지니 모두들 몸조심하시길 바라며, 저는 더 좋은 글로 다시 찾아뵐 수 있도록 하겠습니다~