[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 인증서까지 발급받는 과정이다.
[aws] Route53 : ACM 외부도메인 연동
AWS Route53 ACM 적용 AWS에서 도메인을 구매할경우 co.kr은 지원이 되지 않는다. 가비아 또는 후이즈 사이트에서 도메인을 구매한후 aws에 적용하는 포스팅을 해보도록 하겠다. 필요한 서비스로는 aws r
legioncode.tistory.com
아래 아키텍처 기준으로 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 |