#5 개발일지 - HTTPS 설정 ACM으로 SSL 인증서 발급받기

송은·2023년 8월 15일
1

개발일지

목록 보기
5/6
post-thumbnail

Certbot 설정해주다가 너무 오류가 많이 나서 다른 방법을 찾아보다가 AWS 자체에서도 HTTPS 인증서를 발급해준다는 것을 알게되었다.

+) 로드밸런서를 사용하게 되면 시간당 과금이 되기 때문에 조금 부담이 돼서 여기 부분은 기록으로 남겨두고 이번 프로젝트는 Certbot으로 진행하였다!

AWS EC2에 HTTPS를 적용하기위해서 AWS의 Certificate Manager(ACM)를 사용해보자.

0. 들어가기에 앞서

ACM을 발급하는 지역 선택이 중요한데

로드 밸런서와 동일한 AWS 영역에서 ACM 인증서를 요청하거나 가져와야 하는데, CloudFront 배포는 미국 동부(N.Virginia) 영역에서 인증서를 요청해야 하기 때문이다.


1. Certificate Manager

  1. 인증서 요청

  2. 퍼블릭 인증서 요청

  3. 도메인 주소 입력

인증서 요청을 했다고 뜨고, 인증서 나열 목록에서 보면 아직 검증 대기중, 갱신자격 부적격으로 뜬다.

왼쪽에 인증서 ID를 클릭해서 Route 53에서 레코드 생성을 클릭한다.

이후 일정 시간이 지나면 상태가 발급됨으로 변경되는 것을 볼 수 있다.

상태가 계속 부적격으로 떠서 밸런서 생성시에도 인증서 선택 창에서 뜨지 않아서 어떻게 해야하나 했었는데 이 글을 참고해서 레코드 생성까지 해줘야 하는 걸 알았다!

🔍 도메인으로 발급된 인증서를 조회하고 싶다면 이 사이트에서 조회할 수 있다!
Sectigo 에서 운영하는 SSL 인증서 발급 정보 조회 사이트이다.


2. 대상그룹

AWS > EC2 > 사이드바에서 로드 밸런싱 카테고리에서 로드밸런서와 대상그룹에 대해 설정할 수 있다.

  1. 대상그룹 생성
  2. 인스턴스 선택
  3. 그룹이름 원하는 이름으로 입력 → 다음
  4. 포트 추가

    생성한 대상 그룹의 왼쪽에 체크박스를 누른 뒤 아래에 80과 443포트를 작성해주고 아래에 보류 중인 것으로 포함 을 클릭해서 만들어준다.

    아래 대상 보기에 추가된 것을 볼 수 있다. 그리고 대상 그룹 생성 버튼을 눌러 완료해준다.

3. 로드밸런서

ELB 로드 밸런서의 주된 목적은 리버스 프록시 역할을 하고 네트워크 또는 어플리케이션 트래픽을 다수의 서버에 분산시켜주는 역할이다. 하지만 SSL 암호화 인증도 함께 지원해서 유용하게 사용할 수 있다.

외부에서 http 로 컨택하게 되면 ELB에서 httphttps 로 리디렉션 해주는 작업을 수행한다. (Nginx 설정 없이도 가능!)

다음은 로드밸런서 설정을 해주자.

  1. 로드밸런서 생성
  2. Application Load Balancer 생성
  3. 로드밸런서 작성
    • 로드밸런서 이름: 원하는 이름 작성
    • 네트워크 매핑: 4개 지역 모두 체크
    • 보안 그룹: default 값과 본인의 EC2 인스턴스 선택
    • 리스너 및 라우팅: 기본 http 80과 리스너 추가 버튼을 클릭해서 https 443을 추가 → 대상 그룹은 생성했던 대상그룹으로 선택해서 적용
    • 보안 리스너 설정: 위에 Certificate Manager 에서 생성했던 SSL 인증서 선택
  4. 로드밸런서 생성 버튼 클릭


3-1. 로드밸런서 리스너 규칙 추가

규칙을 추가해 HTTP 80 포트로 서버에 컨택할 시 ELB의 리스너가 HTTPS 443 포트로 리디렉션해주는 설정을 추가해줄 것이다.

  1. 로드밸런서 > 이름 클릭

  2. 상세페이지 아래에 HTTP:80 에 대해 리스너 및 규칙 추가

  3. 규칙 원하는 이름 설정

  4. 조건 유형을 호스트 헤더 로 설정해주고 값은 도메인 주소 (예- example.com) 를 입력해주고 - 확인

  5. 규칙 조건 정의 - 다음

  6. 규칙 작업 정의

그러면 2개 규칙이 된 것을 볼 수 있다.

로드밸런서 대신 nginx만을 사용할 수 있지만 SSL 인증서 발급과 갱신에서 번거로움이 있을 수 있다.
ELB는 유료 서비스이므로 과금될 수 있음을 유의하자! (요금 참고)


참고

profile
개발자

0개의 댓글