[aws] EC2 인스턴스에 HTTPS 적용 (elb:로드밸런서:대상그룹)
2024. 1. 9. 13:59ㆍcloud/aws
AWS EC2 SSL 적용하기
AWS EC2에 HTTPS (SSL)을 적용하고자 한다.
적용하기 위해서는 AWS에서 필요한 요소들은 아래와같다.
Elastic Load Balancing (ELB) / 로드밸런서 / 대상그룹 / Route53 / ACM / 도메인구입
본작업을 하기전에 아래와 같이 Route53과 ACM작업 도메인 구입등의 선행 작업이 필요하다.
아래 포스팅은 외부도메인을 발급받고 CNAME을 연동하고 AWS 인증서까지 발급받는 과정이다.
아래 아키텍처 기준으로 SSL 적용을 해보도록 하겠다.
1. 대상그룹생성
- AWS의 EC2 메뉴로 들어간다음 아래쪽에보면 대상그룹 이라는 메뉴가있다.
- (EC2 > 로드 밸런싱 > 대상 그룹)
- 대상그룹생성 버튼을 클릭한다.
- 대상유형은 인스턴스 를선택하고 대상그룹 이름은 "프로젝트명-target" 이라 생성하였다.
- 만약 Spring-MVC같은 단일소스라면 target은 하나만 생성하고, 백엔드와 프론트엔드가 분리되어 있다면 대상그룹을 두개생성한다. (예시 backend-target-8080 / frontend-target-80)
//만약 상태검사경로를 "/" 하였으나 unhealth로 표현되거나 인식이 되지 않을경우 별도의 경로생성한다.
//그리고 아래와 같이 nginx에서 처리를 하던지 컨트롤러 소스단에서 처리한다.
// nginx.conf 예시
http {
...
server {
...
if ($request_uri = '/healthcheck'){
return 200 'OK';
}
...
2. 대상그룹 등록 및 완료
- 해당대상그룹을 선택하고 포트는 80으로 디폴트, 그리고 "아래에 보류 중인 것으로 포함" 버튼을 클릭한다.
3. 로드밸런서 생성하기
- 대상그룹 작업을 완료하였다면 (EC2 > 로드 밸런싱 > 로드밸런서) 메뉴로 이동한다.
- 로드밸런서 생성 버튼을 클릭한다. 위에서 작업한 대상그룹과 연결을 위한 작업이다.
- 로드밸런서 이름의 경우 본인은 "프로젝트명-alb"로 입력하였다.
- 인터넷으로 통신하기때문에 체계는 인터넷 경계, IP주소유형은 IPv4로 선택한다.
- 네트워크 매핑의경우 a,b,c,d 4개의 서브넷을 선택할수있다.
- VPC생성을 통해서 서브넷을 생성하였다면 해당 VPC서브넷에 맞게 선택해야한다.
- 지금은 기본VPC를 사용중이라 2개이상만 선택하면된다.
- 본인은 a와 c를 선택하였다.
- 보안그룹의 경우 미리 생성했던 보안그룹을 추가한다.
- 추후에 적용할 개발소스는 spring mvc 기반의 소스라 기본적으로 아래와 같이 포트가 인바운드 되어있다.
- 리스너 및 라우팅 에서는 80포트와 443포트 두개의 리스너를 생성해야한다.
- 먼저 아래와 같이 80포트를 설정하고 앞에서 생성한 "프로젝트명-target" 의 대상그룹을 선택한다.
- 그리고 443포트 리스너를 추가하기 위해 리스너 추가 버튼을 클릭한다.
- 최근 보안정책이 변경되었다. AWS에서 권장하는 ~~2021-06 으로 선택한다.
- 인증서소스의 경우 ACM에서 가져오기 한다.
- ACM선택의 경우 해당 포스팅 제일위의 링크작업이 선행되어야 한다. Route53 : ACM 외부도메인 연동
- 위에서 보안리스너 설정을 하고나면 추가서비스 / 로드밸런서 태그 입력폼이 있다. 이부분은 넘어간다.
- 모든작업이 완료되고 아래 로드 밸런서 생성 버튼을 클릭한다.
- 정상적으로 로드밸런서가 생성된것을 확인할수 있다.
- 리스너 규칙 80과 443이 대상그룹과 정상적으로 매칭되어있다.
4. Route53에서 레코드생성
- 마지막으로 Route53으로 이동하여 레코드를 생성해야한다.
- 즉 www.도메인.co.kr을 적용하는 작업이 남아있다.
- 아래그림처럼 해당도메인을 클릭한다.
- 레코드 이름에는 www를 입력한다.
- 만약 레코드 이름에 서브도메인을 사용해야 한다면 api 또는 admin 등의 서브도메인명을 입력하면 된다.
- 레코드 유형은 A유형으로 선택한다.
- 별칭토클을 선택하야 활성화 시키고 아래와 같이 설정한다.
- 리전의 경우 서울이든 도쿄든 선택사항이며 아래 alb는 앞에서 생성한 것을 선택한다.
5. 최종확인 및 점검
- acm확인 / Route53확인 / 대상그룹 확인을 해본다.
- 정상적으로 셋팅되어 있다면 아래와 같이 표현된다.
6. SSL적용확인
'cloud > aws' 카테고리의 다른 글
[aws] AWS Launch template 생성 (Auto Scaling 생성 2단계 작업) (0) | 2024.01.11 |
---|---|
[aws] EC2에 AMI이미지 생성 (Auto Scaling 생성 1단계 작업) (0) | 2024.01.11 |
[aws] OpenVPN 설치정보 : 계정생성 : 환경설정 및 사용법 (0) | 2024.01.08 |
[aws] AWS EC2에 OpenVPN 연동하고 탄력적IP 적용하기 (0) | 2024.01.06 |
[aws] AWS VPC와 서브넷 생성 (라우팅테이블 : NAT게이트웨이) (1) | 2024.01.05 |