Dev/DevOps, Infra

[ACM] 도메인 주소 생성 및 AWS Certification

HJChung 2021. 1. 10. 04:02

첫 번째 프로젝트로 진행한 SAFU 웹 서비스 을 배포하기 위해 서버 구축을 하려하며, 

'서버 단위의 로드 밸런서' 아키텍쳐 중 애플리케이션 서버가 (일단은)하나인 아래의 구성으로 진행하고자 한다.

순서는 

1. EC2 배포 및 inbound 설정
2. ACM 에서 SSL 인증서 발급
3. ELB 생성 및 리스너 세팅
4. Route53의 도메인과 ELB의 인스턴스 DNS 연결
5. EC2에 nginx 설치 및 세팅

으로 진행 될 것이다. 

두 번째 단계인  ACM 에서 SSL 인증서 발급을 해보고자 한다. 

 

참, 왜 이러한 다섯 단계가 필요한가?
왜냐면 SAFU 웹 서비스 을 배포단계에서 막혔던 부분이 sameSite issue였는데, 이유는 HTTPS 프로토콜을 사용하지 않아서 sameSite = none을 설정하더라도 역시 쿠키가 보내지지 않기 때문이다. 그래서 로그인 후에도 세션이 계속 분실되었다. 
아직 HTTPS에 대해 자세히 알지는 못해서 추후에 네트워크에 대해 더 공부할 것이지만 관련 질문의 답변을 조금 참고하자면,
"HTTPS는 SSL 혹은 TLS 라는 알고리즘을 이용해 데이터를 암호화 시켜서 전송하고, 여기서 암호화를 사용하는데 필요한것이 인증서가 필요하다.
인증서를 이용해서 정보를 전달해준 서버가 정말로 데이터를 보내준 서버임을 보장받을수 있다."
고 한다.

나는 Client와 Server 모두에 HTTPS를 적용해야 하며 이에 대한 방법을 아래 글에서 찾았다. 

EC2에서 운영하고 있는 서버에 https를 적용하기 위해서는 두 가지 방법이 있다.

 

방법 1.  EC2 내부에 SSL인증서를 설치하고 서비스하는 방법

유료 인증서나, Let's Encrypt같은 무료 인증서를 적용해서 운영가능하다. 인증서 유효기간마다 갱신해주어야 한다. 

방법 2. AWS에서 제공하는 인증서 관리 서비스인 ACM(AWS Certificate Manager)을 ACM 통합서비스와 연동하여 적용하는 방법

AWS에서 제공하는 인증서 관리 서비스로 갱신에 대한 신경을 개발자가 쓸 필요가 없다. 유효기간은 13개월이며, ACM 통합서비스와 연동해서 쓰면 무료이다. ACM 통합서비스라 함은 AWS의 ELB, CloudFront, API Gateway 등의 서비스이다.

 

그래서 두 번째 방법을 적용하기 위해 

이번 배포에서도

Client Side는 ACM(AWS Certificate Manager)-S3-CloudFront-Route53-API Gateway를 사용할 것이고
Server Side는 ACM(AWS Certificate Manager)-EC2-Nginx-ELB-Route53으로 구축 할 것이다. 

 

즉, Client Side와 Server Side 에서 모두 필요한 단계인 ACM(AWS Certificate Manager)에 대해 정리한 포스트 이다. 

1. 도메인 주소 구하기

먼저 도메인 주소가 필요하다. 

freenom.com에서 무료 도메인을 구한다. 최대 12개월 무료이니 캘린더에 잘 적어두기!

1. freenom에서 사용할 수 있는 도메인을 찾는다. (계속해서 not available이 뜬다면 아래 사진처럼 .tk / .ml / .ga / .cf / .gq 을 붙여서 검색해보자!)

2. 선택해서 checkout 하면 무료기간을 정할 수 있다. 

3. 그 후 사용하기 위해 요구하는 정보를 Your Details 기입한다. 

4. 짠! 그러면 도메인 주소가 발급이 되었다. (추후에 Manage Domain에 들어가서 Namespace를 추가해주어야 한다.)

2.AWS Certification 

0. 위에서 생성한 도메인을 Route53 호스팅 영역에 추가해주었다는 전제 하에 진행한다.

하지 않았다면 이것 부터 진행해야함!

 

1. AWS Certification에 접속 후 인증서 요청을 누른다. (인증서 발급시 region을 미국 동부지역에서만 해야한다는 글도 있던데, 나는 서울에서 진행했고, 검증에 시간이 30분 내외 정도로 비교적(?) 오래 걸린다는 것 뿐이지 잘 진행 되었다.)

2. 공인인증서 요청

3. 앞서 <1. 도메인 주소 구하기> 에서 freenom에서 만든 도메인 주소를 추가한다. 

4. 검증 방법은 DNS 검증

5. 요청한 후 도메인 주소를 눌러서 Route 53에서 레코드 생성을 누근다. 

 

 

그러면 Route53에 CNAME이 추가된 것을 볼 수 있다. 

 

6. 발급이 완료되는데 조금 시간이 걸리지만 기다리면

발급 완료!

 

 

이제 이 인증서를

CloudFront나 ELB에서 도메인 연결시 사용할 수 있다!

 

 

reference

생활코딩의 나의 도메인 이름 장만하기

aws https 서버 구축하기 EC2, ELB, ACM, Route53

AWS ELB와 Nginx로 HTTPS 서버 구축하기