CloudFront와 ELB로 HTTPS페이지 만들기

AWS EC2로 띄운 웹페이지를 별도 설정 없이 CloudFront와 ELB로 HTTPS접속되게 해보자

AWS EC2 인스턴스 하나로 프로토타입을 거의 완성한 후, FGT를 진행하는 단계다. FGT이기때문에 많은 트래픽은 생각할 필요가 없고, 그냥 EC2에 Elastic IP 설정하고 도메인을 붙여서 하면 되겠거니 했는데 로그인페이지에 HTTPS가 적용되지 않아 뜨는 브라우저 경고창이 거슬렸다.

AWS에서 ACM(Amazon Certificate Manager)로 간단하게 인증서를 발급해준다는 것을 얼핏 들은 적이 있는것 같아서 진행해봤다. 그리고 CloudFront와 ELB를 통해서 서버 설정을 하나도 건드리지 않고 간단하게 HTTPS페이지를 만들 수 있었다.

적용 순서는 다음과 같다.

  1. Route 53에 도메인 등록하기
  2. ACM에서 인증서 발급받기
  3. Elastic Load Balancer 설정하기
  4. CloudFront 설정하기
  5. Route 53에서 CloudFront로 Alias 해주기

Route53에 도메인 등록하기

image 외부에서 등록한 도메인이라면 NameServer 설정같은거 해주면 된다.

ACM에서 인증서 발급받기

인증서 요청해서 받으면 된다.

image

NameServer가 AWS로 등록되어있으면 Route53과 연동되어서 자동으로 DNS레코드 인증 진행을 해주니 DNS검증을 골라보자

ELB 설정하기

image

EC2로 들어가면 로드밸런서 메뉴가 있다. 로드밸런서 생성을 누르고

image

어플리케이션 로드밸런서를 선택한다.

image

리스너에는 HTTPS를 추가해주고, 가용 영역에는 자신의 EC2 인스턴스가 있는 VPC를 선택해준다. ~이거잘못골라서 개고생했음ㅠㅠ~

그리고 ACM에서 받은 인증서를 등록해주고, 자신의 EC2 인스턴스를 등록해주면 된다.

그러면 image 저 DNS이름에 있는 주소로 가는 요청은 모두 등록된 EC2 인스턴스로 포워딩 된다.

CloudFront 설정하기

CloudFront로 들어가서 CreateDistribution을 누른다. 유형은 Web을 골라주고 사이트 특성에 맞게 작성하면 된다. image

CloudFront에서 가장 중요한 설정은 이것이다. Alternate Domain Names(CNAMEs)에 자신이 쓰고싶은 도메인을 적어놔야 나중에 Route53에서 설정할 수 있다. CloudFront 주소는 d1fbadq231231.cloudfront.net 이런식으로 생성되기때문에…

그리고 Custom SSL을 설정해야 자신의 도메인과 맞는 인증서가 뜨기때문에 CNAME을 등록한다면 무조건 Custom SSL을 설정해야한다.

Route53에서 CloudFront로 가는 Alias 추가

image

CloudFront에서 CNAME 설정을 했다면 A레코드 추가 후 Alias:Yes를 선택했을 때 저렇게 콤보박스에 뜬다.

이제 마지막 단계에서 A레코드로 추가한 도메인으로 들어가면 https 페이지가 적용된다. CloudFront <-> ELB <-> EC2(s) 인 것이다.

Written on September 26, 2018