Elastic Beanstalk(ELB) 도메인 연동 및 https 세팅하기

jonghyun.log·2023년 3월 21일
0

AWS

목록 보기
2/2
post-thumbnail

AWS에 배포한 프로젝트에 도메인 연동과 https 세팅을 해주도록 하겠습니다.

0. 준비물

  1. 이미 배포된 aws ec2(혹은 elastic Beantalk) 애플리케이션
  2. 연동할 도메인 - 카페24나 hosting.kr 같은 사이트에서 구매하시거나 무료 도메인을 구해 놓으셔야 합니다. (도메인 연동을 하지 않으면 https 세팅이 불가능합니다.)
  3. 로드 밸런서 - 이 글에서 직접 세팅할 예정입니다.
  4. AWS SSL 인증서 - 이 글에서 직접 세팅할 예정입니다.

0-1. 시작하기전 간단한 용어 정리

Https?

Https란 Https의 전송중 데이터 유출을 방지하기 위해 통신에 보안을 추가한 프로토콜

http를 연동해주지 않으면 사이트에 위와 같은 경고창을 만나게 된다.

일반적인 서버에 https 적용하는 순서

  • Https 인증서 구매/발급(10달러 정도)
  • 인증서 병합 및 설정
  • 웹서버에 인증서 설치
  • 웹서버 설정 변경
    • HTTPS 적용
    • HTTP 리다이렉션 등

하지만 위처럼 복잡하게 할 필요없이 AWS에서는 간단하게 Https 를 사용할수있게끔 인프라를 제공한다.

HttpsAWS에서 제공하는 인프라로 세팅하는 방법은 크게 두가지가 존재하는데

  1. Amazon cloud Front를 사용하기
  2. Application Load Banlancer를 사용하기

위의 두가지를 사용하면 AWS에서 제공하는 https(ACM 인증서)를 사용할 수 있게된다.

이글에서는 2번째 방법으로 진행하도록 하겠다.

위의 그림이 2의 방법의 작동하는 과정을 간단하게 요약한 그림으로 순서대로 설명해보면 다음과 같다.

  1. 클라이언트가 서버와 연동된 도메인으로 접속함
  2. 도메인과 연동된 DNS 서버를 타고 AWS ROUTE 53으로 이동
  3. ROUTE 53에서 EC2 주소로 보내줌(ROUTE 53은 도메인과 ec2를 라우팅(연결해주는) 역할을 한다.
  4. EC2 내부의 로드 밸런서(Load Balancer)가 ACM(인증서 제공해주는 AWS 서비스)로 부터 인증서를 받아줌
  5. 인증서를 받아온 후 ec2로 연결

로드 밸런서는 서버에 가해지는 트래픽을 여러대의 서버에게 균등하게 분산시켜주는 역할을 한다.

1. Route 53에서 도메인 EC2 인스턴스와 연결하기

⚠️⚠️ 시작하기 전에 우선 도메인이 필요합니다. 저는 hosting.kr에서 구입한 도메인으로 진행할 예정이므로 hosting.kr 사이트에서 도메인 연동 작업을 진행하겠습니다.

1-1. Route 53에서 도메인 연동 세팅하기

AWS 콘솔에 접속 해서 로그인 후 Route 53 탭으로 이동합니다.
그 이후 DNS 관리 탭의 호스팅 영역 생성을 클릭 합니다.

위의 도메인 이름에 구매한 도메인의 이름을 넣어주고 다른것들은 건들지 말고 호스팅 영역 생성 클릭하면

위의 사진처럼 AWS에서 운영하는 네임서버의 주소를 열어줍니다.

위의 NS 유형의 4개의 링크가 네임서버의 주소들이다.

여기서 위의 새로 생성한 네임서버 주소와 EC2 혹은 Elastick Beanstalk 주소와 연동해줘야 한다.

위의 레코드 생성 클릭

Application/Classic Load Balancer에 대한 별칭 클릭 -> 리전 선택 -> 로드 밸런서 선택

추가) 로드 밸런서가 ELB에 추가가 안되어 있는 경우

만약, 로드밸런서가 없다면 AWS ELB(Elastic Beanstlk) 콘솔로 이동 후 변경하고자 하는 애플리케이션 구성에서 로드밸런서 추가를 클릭해주면 된다.

하지만 만약 위 그림처럼 구성이 로드 밸런서를 포함하지 않으면

위의 그림처럼 용량 편집을 누르고

단일 인스턴스 -> 로드 밸런싱 수행 으로 변경하고 나머지 설정은 그대로 둔채 적용 클릭 적용을 누르면 경고창 하나 띄워주는데 무시하고 확인 클릭

이제 다시 위의 연동으로 돌아가서

위 사진처럼 세팅해주고 레코드 생성 클릭

이제 구매한 도메인의 네임서버를 위의 네임서버로 변경해주는 작업을 해주어야 한다.

이 글에서는 hosting.kr 기준으로 진행하도록 하겠습니다.

1-2. 구매한 도메인의 네임서버 변경하기

hosting.kr 사이트 로그인 후 -> 도메인 관리 클릭 -> 연동하고자 하는 도메인을 클릭 -> 네임서버/DNS 탭 클릭

위쪽에 표시한 수정 버튼을 클릭하면

다음과 같은 UI가 나오는데 이 UI에서 구매한 도메인의 네임서버(DNS)를 변경해줄 수 있다.

맨 처음 도메인을 구매하면 기본적으로 구매한 사이트의 네임서버로 설정이 되어있는데 이것을
Route53에서 제공하는 네임서버 주소로 변경해주어야 우리가 구매한 도메인과 EC2가 연동이 됩니다.

위의 네가지 탭에 AWS에서 제공하는 네임서버 주소를 넣어주고 저장을 누르면 그 주소로 도메인 주소가 변경되게 된다.

위의 과정을 잘 해결했다면

다음과 같이 연동한 주소로 잘 연결이 된 것을 확인해볼 수 있다.

2.Https(SSL 인증서) 세팅하기

2-1. ACM(AWS Certification Manger)에서 SSL 인증서를 발급받기

AWS Certification Manger 콘솔로 이동후 인증서 요청 클릭

퍼블릭 인증서 선택 후

연동할 도메인 이름 입력후 나머지는 그대로 놔두고 하단의 요청 클릭

인증서를 생성했으면 위의 사진처럼 검증 대기 중 이라는 상태로 나올것인데 위의 인증서를 클릭하고

위 사진의 우측의 Route 53에서 레코드 생성을 해주어야 인증서 검증이 완료되어 사용이 가능해진다.

우리는 위에서 Route 53에서 도메인 연동 작업을 해주었으므로 Route 53에서 레코드 생성을 누르면 레코드가 이미 세팅이 되어있을것 입니다.
⚠️⚠️ 도메인 연동을 해주지 않으신 분들은 해주셔야 레코드 생성이 가능합니다.

레코드 발급을 누르고 조금 기다리면 발급됨 으로 상태가 변경된다.

2-2. 로드 밸런서로 443 포트 열어주기

이제 아까 위에서 연동한 로드 밸런서로 443포트를 열어주면 https 세팅이 완료된다.

다시 Elastic beanstalk 콘솔로 이동해서 구성 -> 로드밸런서 편집 클릭

그러면 위 사진처럼 기본으로 80포트(http)만 존재하는데 443포트(https)를 열어줘야 한다.

위 사진과 같이 설정해주고 SSL 인증서는 아까 만든 인증서를 선택해주면 된다.

리스너를 추가해주고 아래의 적용을 클릭하면 https 세팅이 완료된다.

0개의 댓글