도메인 구매해서 백엔드 서버 연결 완료한 이후
프론트까지 같이 연결할 이유가 생겼다
서브도메인 설정해서 내부에서 서비스별 포트포워딩 해주려고 했는데
자꾸 잘 안되길래 https 설정이 안되어서 그런 거 같아
마침 설정하는 김에 블로그 정리까지 시작
📌 HTTPS
HTTP Secure 의 약자로 HTTP 프로토콜을 암호화한 버전이다.
SSL이나 TLS를 이용해서 클라이언트와 서버 간의 모든 커뮤니케이션을 암호화하여
민감한 정보를 서로 안전하게 주고 받도록 해준다
그래서 가끔 HTTPS 지원 안하고 HTTP만 사용하는 웹사이트들은
보안오류 뜨면서 접근을 차단하는 경우가 꽤 있다
HTTPS 설정이 되어있다면 이렇게 URL 옆에 자물쇠가 뜬다 (크롬 기준)
✨ SSL 인증서 발급
보통 HTTPS를 사용하기 위해 SSL(Secure Socket Layer)을 발급 받는다
보통 공인 기업 CA(Certificate Authority)에서 발급해주며
대칭키와 공개키 방식을 동시에 사용한다
클라이언트와 서버는 SSL 핸드쉐이크를 통해 HTTPS 통신을 시작한다
이 SSL 인증서를 발급 받아야 HTTPS를 사용할 수 있는데
사설 기관은 유료인 곳이 많다
AWS 서비스를 사용할 경우 무료로 발급받을 수 있다
다만 이 인증서는 AWS 내에서만 사용가능하다
AWS Certificate Manager (ACM) 으로 이동
인증서 -> 요청
퍼블릭 인증서 요청 -> 다음
내가 등록해둔 도메인 입력
*.example.com 이런식으로 와일드카드를 매치하면
서브도메인까지 같이 등록해준다
검증 방법은 DNS 검증으로
사진은 이미 발급된 인증서이지만
발급 받은 인증서로 들어가면 검증 보류중이라고 뜰 것이다
도메인 -> Route 53에서 레코드 생성 선택
CNAME 을 Route 53에 등록해주면 바로 사용할 수 있다
🚀 ELB 생성 및 설정
EC2 Console -> 로드 밸런싱 -> 로드밸런서 -> 로드 밸런서 생성
Application Load Balancer 선택
로드 밸런서는 AWS 가입 후 1년 간 월 750시간 무료다
EC2 랑 기준은 똑같다
이름 예쁘게 지어주고
우리는 http로 들어오는 트래픽에 대해 처리를 해주어야 하니까 Internet-facing
가용 영역 서브넷을 두 개 이상 선택해서 활성화
보안 그룹 선택
로드밸런서 용으로 따로 파줘도 되고
원래 설정 있으면 그거 써도 된다
대신 새로 만들 경우 80번 포트와 443번 포트를 오픈해야한다
HTTP 와 HTTPS 를 로드밸런서에서 오픈
그리고 타겟 그룹을 지정해야 하는데
인스턴스로 쏴주는게 목적이니까 인스턴스 선택
이름 예쁘게 지어주고
HTTP로 포트 지정
즉 이 그룹에 속한 인스턴스의 80번 포트로 요청을 처리하겠다는 의미
해당 인스턴스 선택하고 포트를 지정
pending 시켜주고 Create target group 눌러주면 설정 끝
오른쪽에서 아까 만들어준 SSL 인증서를 선택할 수 있는데
그거 골라준다
Create Load balancer
다시 로드 밸런서 메뉴에서 리스너 탭 -> HTTP: 80의 규칙 보기 선택
HTTPS 포트인 443으로 리디렉션 시킴
리스너 규칙에서 포트포워딩, HTTP 고정 응답, 특정 IP만 허용 등등
많은 것을 처리할 수도 있다
이번엔 HTTP:443의 규칙으로 들어옴
아까 선택했던 대상 그룹으로 포워딩
🚀 Route 53 에서 로드밸런서 등록
이번엔 Route 53으로 이동한다
호스팅 영역
내가 만든 도메인을 선택 -> 레코드 편집
유형A -> 별칭 -> Application/Classic Load Balancer에 대한 별칭 -> 지역 -> 로드밸런서 선택
저장하면 설정이 끝난다
이제 내 인스턴스 IP로 오는 요청은
로드밸런서가 가로채서 처리해줄 것이다
'🏭 Infra > 🥑 AWS' 카테고리의 다른 글
[AWS] Elastic Beanstalk + Github Actions 사용해서 Spring boot CI/CD 파이프라인 구축하기 (4) | 2022.09.21 |
---|---|
[AWS/Docker/Nginx] 단일 서버에서 도메인별 서비스 제공하기 (0) | 2022.08.10 |