Sua Blog

AWS S3에 SSL, 도메인 적용하기

SSL 인증서란

SSL(Secure Sockets Layer) 인증서는 사용자의 인터넷 브라우저와 웹서버 사이에 이루어지는 모든 정보전송을 https 암호화 프로토콜을 통해 안전하게 전송되도록 하는것이다.

SSL의 작동과정

  1. 웹브라우저 : SSL로 암호화된 페이지를 요청
  2. 웹서버 : Public Key를 인증서와 함께 전송
  3. 웹브라우저 : Public Key가 신용이 있는 CA로부터 서명된 것인지, 날짜가 유효한지, 접속하려는 사이트와 관련있는지 확인
  4. 웹브라우저 : Public Key를 사용해서 URL, http 데이터들을 암호화해서 전송
  5. 웹서버 : Private Key를 이용해서 데이터 복호화
  6. 웹서버 : 요청받은 URL에 대한 응답을 브라우저로부터 받은 암호화키를 이용해 암호화해서 브라우저로 전송
  7. 웹브라우저 : 대칭키를 이용해서 http데이터와 html문서를 복호화하고, 화면에 렌더링

AWS Route53, CloudeFront

  • Route53 Route53은 AWS 리소스(EC2, CloudFront, S3 등)과 연동 가능한 DNS 웹서비스이다. Route53에서 도메인 등록, DNS라우팅, 리소스의 상태 확인을 할수 있다. 도메인 이름으로 호스팅을 생성하면 NS레코드가 생성되고 해당 값을 도메인 등록 대행사이트에 네임서버를 등록하면 AWS 네임서버를 사용할 수 있다.

  • CloudeFront CloudFront는 AWS에서 제공하는 CDN서비스이다. CloudFront는 전 세계 이곳저곳에 Edge Server(Location)을 두고 Client에 가장 가까운 Edge Server를 찾아 Latency를 최소화시켜 빠른 데이터를 제공한다.

Router53

  1. route53 호스팅영역 생성 route53에 호스팅영역을 생성하기 전 우선 S3에 접근권한이 퍼블릭으로 설정되어있는지 확인한다. 퍼블릭으로 설정되어있으면 AWS router53 콘솔에서 호스팅 영역 생성을 선택한다.

스크린샷 2021-01-15 오후 2 16 06

도메인 이름에 연결할 도메인을 입력하고 호스팅 영역 생성을 선택한다.

스크린샷 2021-01-15 오후 2 16 16

호스팅 영역을 생성하고 해당 호스팅을 선택하면 NS, SOA 레코드가 생셩된 것을 볼 수 있다. NS 레코드의 값을 복사해서 도메인 호스팅 업체의 네임서버를 해당 레코드 값으로 변경한다. 도메인에 접근할 때의 네임서버를 변경하면 해당 도메인으로 네임서버를 이용하게 된다. 그리고 네임서버를 변경해서 인증서 요청을 할 때 DNS 인증을 받을 수 있다. 2. 인증서 요청

AWS에서 Certificate Manger 콘솔에 접근한다. 인증서 요청을 선택하여 인증서를 생성한다. (+ 인증서를 발급받을 때는 지역을 버지니아 북부로 설정해야 한다.)

스크린샷 2021-01-15 오후 2 18 03

인증서를 받을 도메인의 이름을 입력한다.

스크린샷 2021-01-15 오후 2 18 11

DNS 검증을 선택하면 AWS에서 네임서버 검증을 한다.

스크린샷 2021-01-15 오후 2 18 20

검증 단계에서 Route53에서 레코드 생성을 선택한다.

스크린샷 2021-01-15 오후 2 18 54

해당 버튼을 누르고 레코드가 생성이되면 router53콘솔에 CNAME레코드가 생성된 것을 확인할 수 있다. 레코드가 생성이되면 인증서 생성이 완료된다.

  1. cloudfront에 등록

스크린샷 2021-01-15 오후 2 34 57

AWS Cloudfront 콘솔로 이동해서 Create Distribution을 선택한다. Get started를 선택하면 cloudfront 구성을 작성할 수 있다.

스크린샷 2021-01-15 오후 3 33 25

스크린샷 2021-01-15 오후 3 33 55

  • Origin Settings Origin Domain Name : s3 링크

  • Default Cache Behavior Settings Viewser Protocol Policy : Redirect HTTP to HTTPS (http로 접근해도 https로 연결)

  • Distribution Settings Alternate Domain Names(CNAMEs) : 실제로 사용할 도메인 SSL Certificate : Custom SSL Certificate를 선택하고 input을 선택하면 드롭다운 메뉴로 발급받은 인증서를 선택

구성을 마치고 Create Distribution을 선택한다.

스크린샷 2021-01-15 오후 3 34 32

cloudfront 리스트에 생성되면 Status가 In progress상태가 되고 기다렸다가 Deployed 상태가 되면 해당 cloudfront에 접근할 수 있게 된다.

  1. Route53에 A레코드 등록

cloudfront까지 구성을 마치면 Route53 콘솔에서 레코드 생성을 선택한다.

스크린샷 2021-01-15 오후 3 50 56

별칭을 선택하고 레코드 유형을 A로 선택한다. 트래픽 라우팅 대상을 Cloudefront 배포로 선택하면 지역이 자동으로 설정된다. input을 클릭하면 생성했던 cloudefront가 드롭다운 목록에 나온다. 레코드를 생성하고 잠시 기다리면 해당 구성이 적용된다.

스크린샷 2021-01-15 오후 3 53 51

설정한 도메인으로 접속하면 인증서가 적용된 것을 확인할 수 있다.