AWS에서는 AWS Certificate Manager (ACM)
을 사용해서 무료로 SSL을 적용할 수 있다.
사실 지금은 letsencrypt
라는 오픈소스 SSL 발급 프로젝트가 널리 퍼져 있어서 무료로 사용할 수 있다는게 크게 와닿지 않을 수 있지만,
AWS 인스턴스를 사용하고, ELB와 Route 53을 사용한다면 letsencrypt
를 도입하기 매우매우 까다로워진다.
그러나 ACM을 사용해서 매우 빠르고 간단하게, 무료로, 여러 인스턴스에 한번에 SSL을 적용할 수 있다.
나머지는 기본 그대로 둬도 됨
우선 보안그룹 중 로드밸런서 보안그룹을 선택한다.
인바운드 규칙 편집
선택 (지금 인바운드 규칙에 HTTPS가 이미 있는데, 없다고 가정함)
그림과 같이 HTTPS 규칙을 Anywhere-IPv4
로 추가하고 규칙 저장한다.
보안그룹 수정완료.
이제 이 보안그룹이 적용된 WEB/WAS 로드밸런서로 443 포트를 통한 HTTPS를 보낼 수 있다.
이제 443포트로 오는 HTTPS 요청은 그대로 처리하고 80포트로 들어오는 HTTP 요청은 HTTPS 프로토콜을 사용하도록 443포트로 redirect 시켜줘야한다.
WEB/WAS 로드밸런서 둘 다 작업해준다.
(예시는 WEB 로드밸런서)
리스너 추가 클릭 (여기도 마찬가지로 443포트가 작업이 되어있지만 없다고 가정함)
HTTPS:443 으로 들어오는 요청을 그대로 대상 그룹에게 전달하는 리스너
생성완료.
이번엔 HTTP:80 요청을 HTTPS:443으로 redirect 시키는 규칙을 추가해야 한다.
HTTP:80 체크 > 규칙관리 > 규칙 편집
규칙 추가 클릭
다음
조건 추가 클릭
호스트 헤더 선택 > 도메인 입력 > 확인
다음
URL로 리디렉션 > HTTPS:443 > 301 > 다음
우선순위를 숫자로 입력한다.
대상 그룹으로 전달하기 전에 최우선적으로 HTTPS로 redirect 시켜야하기 때문에 1로 지정해준다
생성
생성이 완료되면 https://도메인
으로 접속이 될 것이다.
또한 http://도메인
으로 요청을 보내도 https://도메인
으로 redirect 될 것이다.