잘못된 내용이나 의견 있다면 편하게 말씀해주세요.🙏🏻
시리즈
1. 이전 글 : AWS Route 53에서 Domain name(root) 구입하기
2. 현재 글 : CloudFront에 SubDomain 연결하여 HTTPS 통신하기
3. 다음 글 : 로드 밸런서에 SubDomain 연결하여 HTTPS 통신하기
이전 글에서 Domain Name(jjikmuk.com)을 구입하였습니다.
이번 글에서는 파란색, CloudFront에 서브 도메인을 연결하여 HTTPS 통신하는 방법에 대해 알아보고자 합니다.
Root Domain과 SubDomain
이전 글에서 jjikmuk.com 이란 Domain Name을 구입하였습니다. 현재 프론트와 백엔드 서버에 두 가지 도메인 이름이 필요합니다.
앗, 하나밖에 없으니 도메인을 하나 더 구입해야 할까요? 이럴 때는 SubDomain을 사용하여 하나의 도메인을 가지고 하위에 여러 도메인을 두어 사용할 수 있습니다.
구입한 jjikmuk.com 은 사실 먼저 Root Domain이라고이라고 합니다. Root Domain은 "." 기준으로 두 가지로 나눌 수 있습니다
- jjikmuk : 도메인 네임
- com : 최상위 도메인(TLD, Top-Level Domain)
SubDomain(하위 도메인) 이란 도메인 이름의 확장자. 보조 도메인이라고 합니다.
예를 들어 naver.com 루트 도메인이 있다고 한다면 아래와 같은 SubDomain이 존재합니다.
네이버 영화 : movie.naver.com
네이버 지도 : map.naver.com
네이버 블로그 : blog.naver.com
프로젝트에서 서브 도메인을 사용하기로 하였고 다음과 같습니다.
FE 웹(CloudFront) : sikdorak.jjikmuk.com
BE 서버 : api.jjikmuk.com
이제 AWS CloudFront에 서브 도메인 + HTTPS를 연결해봅시다. (단, CloudFront는 이미 배포되어있다고 가정합니다. CloudFront 배포가 궁금하시다면 해당 글을 참고해주세요)
순서는 다음과 같습니다.
1. SSL 인증서 생성하기
2. CloudFront에 SSL 인증서와 SubDomain 연결
3. Route 53, RootDomain에 SubDomain 레코드 추가하여 CloudFront 연결하기
4. 결과
1. SSL 인증서 생성하기 (with AWS ACM)
먼저 HTTPS 연결을 위해 AWS가 무료로 제공해주는 SSL 인증서를 만들려고 합니다.
AWS에서 SSL 인증서를 만들려면 ACM(AWS Certificate Manager) 서비스에서 만들어야 합니다. 이때 ACM은 리전에 속하는 서비스입니다.
CloudFront에 SSL을 연결하기 위해서는 미국 동부 버지니아 리전(us-ease1)만 제공하기 때문에 버지니아 북부에서 SSL을 생성합니다.
인증서 요청 후, 해당 인증서를 Route 53 레코드에 생성해야 합니다. 대기 중인 인증서에 들어가 Route 53에서 레코드 생성을 누르면 손쉽게 생성할 수 있습니다.
저의 경우 약 3~5분 시간이 지난 후 인증서가 발급되었습니다.
Route 53에도 SSL을 위한 레코드가 생성된 것을 확인할 수 있습니다.
2. CloudFront에 SSL 인증서와 사용할 SubDomain 연결하기
이미 배포된 CloudFront 서비스에 SubDomain을 연결하기 위해 편집을 누릅니다.
대체 도메인 이름(CNAME)에 사용할 SubDomain(sikdorak.jjikmuk.com)과 생성한 인증서를 선택합니다.
이제 CloudFront에 SubDomain이 연결되었습니다.
마지막으로 Route 53에서 Root Domain에 SubDomain 레코드를 추가하여 CloudFront와의 연결을 마무리하면 됩니다.
3. Route 53, RootDomain에 SubDomain 레코드 추가하여 CloudFront 연결하기
레코드 이름은 SubDomain으로 지정할 이름을 입력합니다.
레코드 유형은 A로 선택합니다.
별칭을 클릭하고 CloudFront 배포에 대한 별칭을 사용합니다. 이때 CloudFront 인증서가 버즈니아 북부가 아니라면 리소스를 찾을 수 없으니 유의해주세요.
+a) CloudFront 배포할 때 뷰어 프로토콜 정책(HTTP 연결 시 HTTPS로 리다이렉트 옵션)을 선택하면 자동으로 HTTPS로 리다이렉트 됩니다.
결과
위 과정을 거쳤다면 CloudFront 배포 서비스를 CloudFront 도메인이 아닌 설정한 SubDomain으로 연결할 수 있습니다.
# 터미널에서 dig 명령어로 확인해도 DNS가 매핑 되는것을 확인할 수 있음
>dig sikdorak.jjikmuk.com
; <<>> DiG 9.10.6 <<>> sikdorak.jjikmuk.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18400
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;sikdorak.jjikmuk.com. IN A
;; ANSWER SECTION:
sikdorak.jjikmuk.com. 60 IN A 54.192.60.85
sikdorak.jjikmuk.com. 60 IN A 54.192.60.170
sikdorak.jjikmuk.com. 60 IN A 54.192.60.163
sikdorak.jjikmuk.com. 60 IN A 54.192.60.181
;; Query time: 45 msec
;; SERVER: 168.126.63.1#53(168.126.63.1)
;; WHEN: Tue Sep 13 15:12:50 KST 2022
;; MSG SIZE rcvd: 113
마치며
이번 글에서는 CloudFront에 SubDomain 연결하여 HTTPS 통신하는 방법에 대해 알아보았습니다.
다음 글에서는 백엔드 서버가 연결된 로드 밸런서에 SubDomain 연결하여 HTTPS 통신하는 방법에 대해 알아보려 합니다.
⛓ Reference
서브 도메인을 활용하여 AWS 서비스에 연결하기 1. Route 53에서 도메인 네임 구입 방법
GitHub Actions를 활용해 React를 S3, CloudFront를 사용해 배포하기
Requirements for using SSL/TLS certificates with CloudFront
'👾 Server > ☁️AWS' 카테고리의 다른 글
AWS SDK for Java 1.x가 AWS credentials를 가져오는 5가지 방법 (0) | 2023.04.23 |
---|---|
서브 도메인과 AWS 서비스 연결하기 3. 로드 밸런서에 SubDomain 연결하여 HTTPS 통신하기 (2) | 2022.09.13 |
서브 도메인과 AWS 서비스 연결하기 1. Route 53에서 도메인 네임 구입 방법 (0) | 2022.09.13 |
S3에 이미지 업로드 기능 아키텍처 비교 (서버에 직접 전송, presigned URL 활용) (0) | 2022.09.04 |
VPC Peering(피어링) (1) | 2022.08.01 |
댓글