EC2 HTTPS로 연결하기 포스팅을 따라하여, 성공한 기록 남겨둡니다!
해당 방법은 소형 서버 혹은 개발 공부를 위한 프로젝트 진행시, Route53과 Elastic Load Balancer, 도메인 구입으로 인한 과금이 발생합니다.
HyperText Transfer Protocol(HTTP) + Secure Socket Layer(SSL) = HTTPS
데이터 전송의 보안을 강화하기 위해, 암호화 사용
→ 모든 웹사이트(로그인 기능을 포함하는)는 HTTPS 사용 必
→ 기존의 HTTP 프로토콜에서 암호구간을 추가한 프로토콜을 의미❓ 프로토콜(Protocol)? (개인 노션 자료)
데이터의 교환 방식을 정의하는 규칙 체계
- 1년 동안 저렴하게 사용 가능한 것을 구매하도록 하자!
- 도메인은 Route53에서 발급받은 NameServer(NS)와 연결
❓ 도메인?
인터넷 주소, 즉 웹사이트의 위치를 나타내며, IP 주소의 별칭
- 호스팅 영역을 생성한 뒤, 구매한 도메인 이름으로 등록
- 등록시 유형은 퍼블릭
- 호스팅 영역을 생성하면, 해당 도메인에 대한 4개의 NS를 확인할 수 있음
→ NS가 4개인 이유: 하나의 NS가 없어지면 해당 서비스가 없어지기 때문에❓ DNS(Domain Name System)는 도메인을 IP주소로 바꿔주는 역할을 하는 시스템 계층
Domain과 NS 참고 포스팅
- 발급받은 4개의 NS 주소를 구매한 도메인과 연결하기 위해, 가비아의 도메인 관리로 이동
- 네임서버 설정에서 4개의 네임서버 등록해주기 (마지막 .은 제외할 것!)
- 이로써, AWS는 Route53에서 연결한 도메인이 내가 소유한 도메인이란 것을 인식할 수 있음
구매한 도메인에 인증서를 발급받아야 HTTPS로 전환할 수 있다!
- (해당 과정을 나중에 Let's Encrypt로 진행해보자)
- AWS certificate Manager 대시보드로 이동하여, 인증서 요청하기 (구매한 도메인 이름 입력, DNS 검증)
→ ACM은 SSL/TSL 인증서를 손쉽게 관리하고, 배포, 갱신할 수 있는 서비스- 인증서를 선택하여, Route 53에서 레코드 생성하기를 통해 CNAME 레코드 만들어주기
❓ CNAME 레코드?
하나의 도메인에 다른 이름을 부여하는 방식 → 서브 네임 지정
이 경우, DNS 인증 방식을 사용하기 때문에, CNAME 레코드가 생성된다.
→ Route53에 등록한 도메인에 대해 인증서를 발급하면, 유일한 Key-Value 형태로 AWS에서 CNAME을 부여한다.
→ 이 Key 값을 통해, CNAME 도메인 레코드가 사용자의 소유권임을 증명한다.
→ 위 과정을 이메일 인증을 통해 진행해도 무방 (Route53 같은 도메인 DB에 대한 권한이 충분하지 않거나, DNS 레코드를 다루기 어려운 상황)- 일정 시간(10분~2시간 사이) 이 지나면, 발급받은 SSL이 '발급됨' 상태로 전환
서버를 돌리고 있는 EC2 보안그룹의 443포트(HTTPS)를 열어주자! (인바운드 규칙 편집)
→ 4와 6 둘 다 열어두기
EC2의 메뉴 중 로드 밸런싱 탭의 대상 그룹으로 이동!
→ 대상 그룹을 만들 때, 포트 번호를 8080으로 변경 (Spring 서버 포트)
주의사항: health check를 하는 path는 query가 포함되지 않은 get 요청시, 반환되는 값이 있는 곳으로 설정 (없다면, get 요청을 보냈을 때, "Connection OK"를 반환하는 API를 하나 만들자!)
→ 해당 대상 그룹이 적용될 인스턴스를 선택한 뒤, 8080 포트로 연결
❓ 로드 밸런서?
대량의 트래픽을 감당하기 위해 서버를 여러 대 돌리는 경우, 모든 클라이언트의 요청에 일관성있게 응답하기 위해 사용되는 기술 → 트래픽을 균등하게 분산시켜 주는 기능
- Application Load Balancer를 선택하여 생성
- 네트워크 매핑시, EC2가 사용하는 VPC, 서브넷과 매핑되도록 설정할 것!
- 최소 2개 이상의 서브넷을 두어야 하므로, EC2의 서브넷을 하나, 나머지 하나는 아무거나
- 보안그룹 설정 역시 EC2에서 사용하는 보안그룹으로 설정
- 로드 밸런서의 리스너(어떤 포트로 들어오는 것을 Listen 할 것인지)를 HTTP 8080과, HTTPS 443 등록할 것 / 이때, 대상 그룹은 위에서 만든 대상그룹
- 보안 리스너 설정에서 발급된 SSL 인증서를 Default 인증서로 설정
Route53의 구매한 도메인의 호스팅 영역에서 레코드 생성을 통해 A레코드 만들기
❓ A 레코드?
도메인 이름을 IPv4 주소로 매핑 → 사용자가 도메인 이름을 입력한 경우, 도메인과 연결된 웹 서버의 IPv4 주소로 라우팅