[AWS] HTTPS (HTTP에 SSL 보안 적용하기) 로드밸런서, 타겟그룹, ACM

jjong_gang·2022년 3월 29일
5
post-thumbnail

시작

AWS에서 EC2 서버를 만들게 되면, 기본적으로 SSL 보안이 적용되지 않은 HTTP가 설정되게 됩니다. 실제로 서비스를 하기 위해서는 SSL보안이 매우 일반적이므로, 기존의 HTTP에 SSL 보안을 적용시키는 방법에 대해 알아보겠습니다!!

진짜 시작

HTTPS 적용은 세 개의 파트로 나뉩니다!
1. 엔진엑스 환경을 구성하여 포트 포워딩
2. 도메인 AWS에 적용하기
3. 적용된 도메인 기반으로 HTTPS 설정하기

1, 2 번의 내용이 모두 서버와 클라우드 상에 적용되어야 현재 포스트인 3번을 수행할 수 있습니다.
혹시 이전 포스트를 확인하지 않았다면 모두 보고 HTTPS 설정을 시작하시면 좋을 거 같습니다!

Certificate Manager

먼저 인증서를 발급해야합니다.

AWS의 Certificate Manager 서비스로 진입합니다.

서비스에서 인증서 요청을 누르고 인증서 발급 화면으로 넘어갑니다.

도메인 이름을 입력하는 form에 인증서를 적용할 domain을 입력해줍니다.
저는 www를 포함하여 프론트엔드, 백엔드에 적용할 모든 주소를 보호할 것이므로 와일드카드인 *을 앞에 붙여서,

*.<domain이름>
ex)
*.naver.com

위와같은 형식으로 입력하였습니다.
그 후 다른 설정을 바꾸지 않고 다음으로 넘어가줍니다.

전체 인증서 리스트가 표시되는 창으로 넘어가는데, 새로고침을 해주면 위와 같이 검증 대기 중의 상태로 도메인이 표시되는 것을 확인할 수 있습니다.

레코드 검증

좌측의 인증서 ID의 링크를 타고 들어가면 자신의 인증서 정보가 표시되고, 우측에서 Route53에서 레코드 생성이라는 버튼을 확인할 수 있습니다.

Route53에서 레코드 생성 버튼을 누르고

넘어가는 창에서 레코드 생성 버튼을 눌러, 레코드를 생성을 해줍니다.

조금 기다리면..

발급됨으로 바뀌게 됩니다!!

이제 HTTPS를 적용할 준비가 끝났습니다!

대상그룹(Target Group) 만들기

먼저 로드 밸런서에 적용하기 위한 Target Group을 만들어줘야 합니다.

EC2 서비스의 target group카테고리로 들어가 우측의 Create Target Group 버튼을 눌러 타겟그룹 설정으로 들어갑니다!

들어가서 다른 설정은 아무것도 바꾸지 않고, 타겟그룹 이름만 입력합니다.

그 후 register target 단계로 넘어가게 되는데, 여기서는 자신의 EC2 인스턴스를 선택하고, 80번 포트를 입력 후 아래의 include as pending below를 선택합니다.

로드밸런서 만들기

로드밸런서 카테고리로 넘어가서 로드밸런서 생성 버튼을 누릅니다.

처음 나오는 세 개의 항목 중 Application Load Balancer를 선택해줍니다.
다음으로 나오는 로드밸런서 세부사항 설정에서 먼저 이름을 입력합니다.

그 후 Mappings 에서 두 개 이상의 항목을 선택해줍니다. 자신의 인스턴스에 맞는 리전이 포함되어야 합니다.

Security Group에서는 기존 자신의 EC2 인스턴스의 보안그룹을 적용해줍니다.

그리고 여기가 핵심입니다!!
80번 포트와 443번 포트를 추가하고, 우측의 target group에 아까 생성했던 target group을 적용합니다.
리스너를 등록하고, 해당 포트로 들어오는 요청을 타겟그룹으로 넘겨주게 됩니다.

근데 생각해보니까 여기도 핵심입니다!! 아까 만들었던 ACM인증서를 적용해줍니다!! SSL보안을 담당합니다.

여기까지의 설정을 최종적으로 적용해주시고, 프로비저닝이 끝날 때까지 조금 기다리면.. 5분정도네요.. 🏃

활성화 되었습니다!!

도메인 설정

이제 설정을 마무리하기 위해 Route53으로 돌아갑니다.
자신의 domain으로 들어가고, 레코드 생성 버튼을 눌러 레코드를 새로 생성합니다.

6개 중에서 단순 라우팅을 선택합니다!

단순 레코드 정의 페이지로 들어오면, 레코드 이름을 먼저 선택하게 됩니다.
처음에 Certificate Manager를 만드는 과정에서 와일드카드 *를 사용했으므로, 여기는 원하시는 문자를 적용하시면 됩니다.
저는 백엔드 서버용으로 사용할 것이므로, api.domain.com의 형태로 레코드를 만듭니다.

아래의 레코드 유형은 A타입으로 그대로 두고,

값/트래픽 라우팅 대상 여기는 진짜 핵심입니다..!
아래와 같이 Application/Classic Load Balancer에 대한 별칭을 선택하고 리전은 인스턴스의 리전을 선택합니다.
아래의 로드밸런서 선택에서 아까 만들었던 로드밸런스를 적용해줍니다.

단순 레코드 정의를 마무리하고, 레코드 생성을 클릭하여 레코드를 생성합니다.

참고자료

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791161755656&orderClick=LAG&Kc=

https://velog.io/@hyundong_kk/AWS-SSLHTTPS적용하기

3개의 댓글

comment-user-thumbnail
2022년 5월 25일

선생님 안녕하세요. 글 보고 똑같이 따라해봤는데, https로 접근이 안됩니다.
로드 밸런서도 확인해봤는데 https 443포트도 정상적으로 추가되어 있습니다.
어떻게 해결 할 수 있을까요?

1개의 답글
comment-user-thumbnail
2022년 12월 5일

반갑습니다.. 저 역시 https로 접근이 안되는데.. 무언가 놓친거 같은데 도저히 모르게ㅆ습니다..
1. 도메인 신청해서 결제완료 사용가능
2. 인증서 신청해서 발급 됭ㅓㅆ으며
3. 보안그룹 https TCP 추가 완료
4. 로드밸렁싱 대상그룹

  • HTtp 80으로 그룹 추가 완료
  1. 로드밸런서 글과 같이 추가 하여 상태 활성화 되었씁니다…

혹시 메인 HTML코드에 추가 해야 할 부분이 있나요?

되야 정상인데 안됩니다…

저는 개인 사이트 운영중에 있으며, Http로는 접속이 가능합니다

답글 달기