AWS 인프라 구축 ‐ (11) 도메인 및 HTTPS 적용 - ttasjwi/board-system GitHub Wiki

SSL/ TLS란?

  • 쉽게 말하면, HTTP를 HTTPS로 바꿔주는 인증서이다.
  • 지난 글에서 ELBSSL/TLS 기능을 제공한다고 했다. SSL/TLS 인증서를 활용해 HTTP가 아닌 HTTPS로 통신할 수 있게 만들어준다.

HTTPS

  • HTTPS를 적용시켜야 하는 이유:
    • 보안적인 이유: 데이터를 서버와 주고 받을 때 암호화를 시켜서 통신을 한다. 암호화를 하지 않으면 누군가 중간에서 데이터를 가로채서 해킹할 수도 있다. 보안에 좋지 않다.
    • 사용자 이탈: 어떤 사이트에 들어갔는데 아래와 같이 보인다면 왠지 믿음직스럽지 못한 사이트라고 생각할 것이다.
  • HTTPS 인증을 받은 웹 사이트가 백엔드 서버와 통신하려면, 백엔드 서버의 주소도 HTTPS 인증을 받아야 한다. 따라서 백엔드 서버와 통신할 때도 IP 주소로 통신하는 게 아니라, HTTPS 인증을 받은 도메인 주소로 통신을 한다.

도메인 구입

  • AWS Route 53 을 통해 구입하는 방법
  • 가비아를 통해 구입하는 방법 << 나는 이 방법을 썼다.

Route53 를 통해, 도메인-ELB 연결

image

image

  • 호스팅 영역 생성 : 아까 구입해둔 도메인 지정

image

image

  • 레코드 생성

image

  • 위와 같이 설정할 경우 api.board-system.site 의 도메인으로 접속했을 때 ELB 로 연결해준다는 것이다.
  • 레코드 이름이 빈칸일 경우 메인도메인인 board-system.site, 빈칸이 아닐 경우 api.board-system.site 와 같이 지정하여 연결 가능하다.( 이와 같이 하나의 도메인만 구매하더라도 여러 개의 서브 도메인을 사용할 수 있다. )
  • 참고로 레코드 유형으로 여러가지 유형이 있는데 다음 두 가지만 기억하면 될듯.
    • A 레코드 : 도메인을 특정 IPv4 주소에 연결시키고 싶을 때 사용하는 레코드 유형이다.
    • CNAME 레코드
      • 도메인을 특정 도메인 주소에 연결시키고 싶을 때 사용하는 레코드 유형이다.
      • 만약 CNAME 레코드의 값으로 www.naver.com을 적었다고 가정하자. 그러면 해당 도메인으로 접속했을 때, www.naver.com으로 연결되어 이동한다.

image

  • AWS 는 NS 를 통해 네임서버들을 제공하고 있는데

image

  • 가비아의 네임서버 설정에서 1~4차까지를 위의 네임서버로 변경한다.

image

  • 여기까지 하면 일단 api.board-system.site 로 접속이 되는 것을 확인할 수 있다.

HTTPS 인증서 발급

image

  • AWS Certificate Manager 로 들어가 인증서 요청 버튼
  • board-system.site, *.board-system.site 로 등록
  • 퍼블릭 인증서 요청

image

  • 인증서를 발급받았다면, Route 53 에서 레코드 생성 클릭.
  • 이 과정을 거치고 기다리면 HTTPS 인증서가 내가 가진 도메인인지 검증한다.

image

  • 검증이 완료되면 이렇게 검증된다. (3분-10분 소요)

ELB 에 HTTPS 적용

image

  • ELB 로 돌아와서, 리스너 추가 클릭

image

image

위와 같이 설정하면 HTTPS가 한 5초 정도 있다가 바로 적용된다.


HTTP 접근에 대해서도 HTTPS 적용

image

image

  • 80번 포트 리스너 삭제
  • URL로 리디렉션 : HTTPS 443