EC2로 HTTPS 연결
개요
HTTPS는 SSL이라는 보안 프로토콜 위에서 HTTP 통신을 하는 프로토콜을 뜻함(최근에는 발전된 TLS 사용).
사전 필요사항
EC2 인스턴스 개설
실행 가능한 웹 서버
도메인 구매
특정 IP에 부여된 naver.com, google.com과 같은 주소들을 도메인이라고 하며, https 연결을 위해서는 도메인 주소를 소유하고 있어야 한다.
1. 가비아에 접속
2. 사용을 원하는 도메인 명을 검색
3. 도메인 별 1년 가격이 나옴(Event 가격은 최초 1년만 적용됨), 기간이 지나고 연장하지 않을 경우 자동으로 삭제 됨
4. 등록 기간 설정 후 필수 정보 입력 후 결제
5. My가비아 → 이용 중인 서비스 → 도메인 메뉴에서 구입한 도메인 확인 가능
Route 53에서 도메인 인증
1. AWS 계정에 로그인 후 Route 53 서비스 대시보드로 이동
2. 호스팅 영역 생성
3. 도메인 이름 구매한 도메인으로 작성
- 나머지 값 default 유지
4. 생성한 호스팅 영역에서 NS(네임서버), SOA 확인
5. 구입한 도메인 네임 서버를 AWS 호스팅 영역의 NS 값/트래픽 라우팅 대상 값으로 변경(마지막 . 제외)
- 가비아 홈페이지: My가비아 → 이용 중인 서비스 도메인 → (내가 구입한 도메인)관리
6. 소유자 인증 후 적용
ACM(AWS Certificate Manager) 인증서 발급 받기
SSL(TSL) 인증서 발급
1. Certificate Manager 대시보드로 이동
2. 인증서 요청 클릭
3. 구매한 도메인 입력
4. 기본 값으로 설정 후 요청 클릭
5. ACM 메뉴에서 인증서 나열 클릭
- DNS 검증 기준, 검증 대기중 / 아니요 / 부적격 이 나오면 정상
6. Route 53에 CNAME 레코드 생성
SSL 상태가 발급됨이 되는데 20~30분에서 2시간 정도 걸림
로드밸런서 사용 Health check 통과
구현방식
- 타켓 그룹 1개
- HTTPS 요청(리스너에서 캐치) → HTTPS를 거친 후, 로드밸런싱을 통해 본래 사용하던 HTTP 포트(타겟 그룹)로 요청
- HTTP 요청(리스너에서 캐치) → 위의 HTTPS로 리디렉션
중요
1. 네트워크는 연결할 EC2의 설정을 따를 것(VPC) 등
2. 보안그룹은 연결할 EC2의 설정을 따를 것
3. 나의 웹 서버에서 사용하는 포트 번호를 사용할 것 → (예: 8080)
EC2 보안 그룹 수정
1. 연결할 EC2 인스턴스 정보 탭에 들어가 사용 중인 보안 그룹(Red box)클릭
2. 인바운드 규칙 편집 클릭
3. 웹 서버에서 사용 중인 포트 번호, 443번 포트에 대해 Anywhere-IPv4, Anywhere-IPv6을 모두 등록하고, 우측하단의 규칙 저장 클릭
타겟 그룹(Target Group) 생성
1. 타겟 그룹을 생성
2. 타겟 유형 인스턴스 선택
3. 이름 설정 후 포트 번호 변경, VPC를 EC2와 동일하게 적용(default VPC면 default)
4. 사용할 인스턴스 체크 후, 포트 번호를 확인하고 아래에 포함
5. 타겟이 추가되면 타겟 그룹 생성(Create target group)을 클릭
로드 밸런서(Load Balancer) 생성
1. 로드 밸런서 생성을 클릭(ALB 선택)
2. 이름 설정
3. 네트워크 매핑 2개의 AZ(Available Zone) 설정, 2a / 2c 선택
- EC2가 사용하는 VPC, 서브넷과 매핑되어야 함
- 인스턴스의 VPC, 서브넷(혹은 가용 영역)을 포함하도록 네트워크 매핑을 진행
4. 보안 그룹은 EC2 인스턴스와 동일하게 설정
5. HTTP 8080, HTTPS 443에 대한 리스너를 생성함
- Forward to를 위에서 생성한 타겟 그룹으로 설정
6. 생성한 SSL 인증서 적용
7. 로드 밸런서 생성 완료
도메인 레코드 설정
Route 53 호스팅 영역에 A레코드 생성
1. 레코드 설정
- 트래픽 라우팅 대상을 위에서 생성한 LB로 지정
로드 밸런서 리스너 규칙 추가
로드 밸런서의 정보로 들어가, 리스너 탭을 확인
1. HTTPS:443 규칙 편집
2. HTTP:8080 규칙 편집
Health Check
1. EC2 → 로드 밸런싱(좌측 메뉴) → 대상 그룹에서 생성한 대상 그룹 선택
2. Health Check 탭 - 편집(Edit) 선택
3. Health check path의 / Get API 주소 입력
- Health Check 시 HttpStatus Code 200을 반환하는 Get 메서드
4. Health Check 통과 후 도메인 주소 입력 후 접속
- 아래 사진과 같으면 정상
'항해 99 > Spring' 카테고리의 다른 글
CORS 에러 해결 방법, CORS 보안 취약점 예방 가이드 (0) | 2024.03.19 |
---|---|
CORS (1) | 2024.03.18 |
LogBack을 통한 로그 관리 (0) | 2024.03.15 |
Jwt Access Token과 Refresh Token (0) | 2024.03.14 |
REST API URI 규칙 (0) | 2024.03.13 |