AWS 인프라 구축 ‐ (11) 도메인 및 HTTPS 적용 - ttasjwi/board-system GitHub Wiki
SSL/ TLS란?
- 쉽게 말하면, HTTP를 HTTPS로 바꿔주는 인증서이다.
- 지난 글에서 ELB는 SSL/TLS 기능을 제공한다고 했다. SSL/TLS 인증서를 활용해 HTTP가 아닌 HTTPS로 통신할 수 있게 만들어준다.
HTTPS
- HTTPS를 적용시켜야 하는 이유:
- 보안적인 이유: 데이터를 서버와 주고 받을 때 암호화를 시켜서 통신을 한다. 암호화를 하지 않으면 누군가 중간에서 데이터를 가로채서 해킹할 수도 있다. 보안에 좋지 않다.
- 사용자 이탈: 어떤 사이트에 들어갔는데 아래와 같이 보인다면 왠지 믿음직스럽지 못한 사이트라고 생각할 것이다.
- HTTPS 인증을 받은 웹 사이트가 백엔드 서버와 통신하려면, 백엔드 서버의 주소도 HTTPS 인증을 받아야 한다. 따라서 백엔드 서버와 통신할 때도 IP 주소로 통신하는 게 아니라, HTTPS 인증을 받은 도메인 주소로 통신을 한다.
도메인 구입
- AWS Route 53 을 통해 구입하는 방법
- 가비아를 통해 구입하는 방법 << 나는 이 방법을 썼다.
Route53 를 통해, 도메인-ELB 연결
- 호스팅 영역 생성 : 아까 구입해둔 도메인 지정
- 레코드 생성
- 위와 같이 설정할 경우
api.board-system.site
의 도메인으로 접속했을 때 ELB 로 연결해준다는 것이다. - 레코드 이름이 빈칸일 경우 메인도메인인
board-system.site
, 빈칸이 아닐 경우api.board-system.site
와 같이 지정하여 연결 가능하다.( 이와 같이 하나의 도메인만 구매하더라도 여러 개의 서브 도메인을 사용할 수 있다. ) - 참고로 레코드 유형으로 여러가지 유형이 있는데 다음 두 가지만 기억하면 될듯.
- A 레코드 : 도메인을 특정 IPv4 주소에 연결시키고 싶을 때 사용하는 레코드 유형이다.
- CNAME 레코드
- 도메인을 특정 도메인 주소에 연결시키고 싶을 때 사용하는 레코드 유형이다.
- 만약 CNAME 레코드의 값으로
www.naver.com
을 적었다고 가정하자. 그러면 해당 도메인으로 접속했을 때,www.naver.com
으로 연결되어 이동한다.
- AWS 는 NS 를 통해 네임서버들을 제공하고 있는데
- 가비아의 네임서버 설정에서 1~4차까지를 위의 네임서버로 변경한다.
- 여기까지 하면 일단
api.board-system.site
로 접속이 되는 것을 확인할 수 있다.
HTTPS 인증서 발급
- AWS Certificate Manager 로 들어가 인증서 요청 버튼
board-system.site
,*.board-system.site
로 등록- 퍼블릭 인증서 요청
- 인증서를 발급받았다면, Route 53 에서 레코드 생성 클릭.
- 이 과정을 거치고 기다리면 HTTPS 인증서가 내가 가진 도메인인지 검증한다.
- 검증이 완료되면 이렇게 검증된다. (3분-10분 소요)
ELB 에 HTTPS 적용
- ELB 로 돌아와서, 리스너 추가 클릭
위와 같이 설정하면 HTTPS가 한 5초 정도 있다가 바로 적용된다.
HTTP 접근에 대해서도 HTTPS 적용
- 80번 포트 리스너 삭제
- URL로 리디렉션 : HTTPS 443