개요
부트캠프 프로젝트를 하면서 HTTP를 HTTPS로 업그레이드하기 라는 추가 요구사항이 있었다. 맡은 파트를 일찍 끝내고 어떤걸 할까 고민하던 와중에 해당 주제에 흥미가 생겨 서버의 프로토콜을 HTTPS로 바꿔보기로 했다. 해야할게 좀 많아 어려워보일 수 있는데 좋은 참고자료를 찾아서 하루안에 EC2에 올라가있는 서버의 프로토콜을 HTTPS로 성공적으로 전환할 수 있었다.
가비아 도메인 구매
HTTPS로 통신하기 위해서는 SSL인증서를 발급받아야한다. SSL인증서는 소유하고 있는 도메인에 대한 보안 인증서이고 SSL인증서를 발급받기 위해서는 도메인이 필요하다. 무료 도메인을 찾아보고 있었는데 무료라 그런지 대부분 평이 좋지는 않았고 가비아에서 매우 싼 가격으로 도메인을 구입할 수 있다는 정보를 얻었다.
웹을 넘어 클라우드로. 가비아
그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브
www.gabia.com
가비아 도메인 카테고리에 접속하면 아래와 같이 할인하는 도메인 목록을 볼 수 있다. 프로젝트용으로 한 번 HTTPS를 경험해보고 싶은 것이기 때문에 제일 싼 500원짜리 .SHOP으로 결정했다. 결정했으면 검색창에 .SHOP으로 끝나는 도메인을 입력하고 구매 가능하다면 절차에 따라 구매하면 된다.
AWS Route 53 호스팅 영역생성하고 도메인 소유 증명하기
도메인을 발급받았으면 SSL인증서를 발급받기 전에 한가지 더 해야할 것이 있다. 해당 도메인을 소유하고 있다는 것을 증명해야한다. AWS Route 53을 이용해 호스팅 영역을 이용해 증명할 수 있다. 아래와 같이 호스팅 영역을 생성하는데 다른건 다 그대로 두고 도메인 이름만 구매한 도메인을 입력하고 호스팅 영역을 생성하면 된다.
호스팅 영역을 생성하고 조회하면 유형이 NS, SOA인 레코드가 2개 존재할텐데 NS(네임서버) 유형의 레코드를 이용해 해당 도메인을 소유하고 있다는 것을 증명할 수 있다. NS유형 레코드의 값/트래픽 라우팅 대상 값을 보면 4개의 값이 도메인 형식으로 존재하는데 해당 값들을 가비아 내 도메인 네임서버에 등록해야한다.
가비아 사이트에 접속해 My가비아 -> 도메인 통합 관리툴 -> 도메인 정보 변경으로 들어가면 아래와 같은 화면이 나오는데 도메인을 선택하고 네임서버탭으로 들어간다. 호스팅 영역의 NS유형 레코드에서 확인한 4개의 값을 아래 1~4차 호스트명 값으로 넣어준다(마지막에 .은 제거하고 넣는다). 마지막으로, 소유자 인증을 마친 후 적용을 눌러주면 AWS에 해당 도메인을 소유하고 있다는 것을 증명할 수 있다.
ACM(AWS Certificate Manager) 인증서 발급 받기
위 과정을 성공적으로 마무리 했으면 도메인에 대한 SSL인증서를 발급받을 수 있다. AWS Certificate Manager를 이용하면 되는데 ACM에 들어가서 인증서 요청을 선택한 후 아래와 같이 진행한다. 도메인 이름에 소유한 도메인을 입력하고 나머지는 기본 값으로 설정한 후 요청하면 된다.
SSL인증서가 정상적으로 발급되었다면 내 도메인은 ACM이 인증한 도메인이 되는 것이고 이제 HTTPS 통신을 할 준비가 완료되었다는 것이다. 인증서를 확인해보면 Route 53의 CNAME 유형 레코드 값으로 등록해야하는 CNAME 값을 제공받는다. CNAME(Canonical Name)은 간단하게 도메인 주소와 도메인 주소를 매핑하는 레코드 유형이라고 보면 된다. 즉, 구입한 도메인에 요청을 보내면 AWS로 요청을 전달하는 것이다. 이렇게 전달된 요청은 Route 53의 A 유형 레코드 값에 로드밸런서를 등록하면 로드밸런서가 받아서 적합한 EC2 Instance -> 요청 포트로 전달해 마무리한다.
A 유형 레코드를 생성하는 방법은 뒤에서 다루도록 하고 우선은 CNAME 유형의 레코드를 생성하자. Route 53에서 레코드 생성->동일한 도메인 선택 후 레코드 생성. 이제 Route 53 내 도메인의 호스팅 영역에 가보면 CNAME 유형 레코드가 생성된 것을 확인할 수 있다.
다음 단계로는 CNAME 값을 가비아에 등록해 도메인과 AWS를 매핑, 로드밸런서를 생성하고 Route 53에 A유형 레코드를 추가하면 모든 과정이 마무리된다. 글이 길어지는 관계로 다음 내용은 아래 [AWS] EC2 서버에 HTTPS 적용하기 (2) 에 작성했다.
[이어지는 글]
[AWS] EC2 서버에 HTTPS 적용하기 (2)
zzzzseong.tistory.com
[참고자료]
EC2 HTTPS로 연결하기 (1) - 도메인 구매하고 ACM 인증서 발급하기
> 1편) 도메인 구매하고 ACM 인증서 발급하기 도메인 인증 --> ACM 인증서 발급 --> Target Group 생성 --> Load Balancer 생성 --> 규칙 수정 --> Health check 성공) 2편) 로드 밸런서 사용하고 Health check 통과하기 (
woojin.tistory.com
EC2 HTTPS로 연결하기 (2) - 로드밸런서로 리다이렉트 설정하고 Health check 통과하기
> 1편) 도메인 구매하고 ACM 인증서 발급하기 (링크) (도메인 구매 --> 도메인 인증 --> ACM 인증서 발급 --> Target Group 생성 --> Load Balancer 생성 --> 규칙 수정 --> Health check 성공) 2편) 로드 밸런서 사용하
woojin.tistory.com