Certbot 설정해주다가 너무 오류가 많이 나서 다른 방법을 찾아보다가 AWS 자체에서도 HTTPS 인증서를 발급해준다는 것을 알게되었다.
+) 로드밸런서를 사용하게 되면 시간당 과금이 되기 때문에 조금 부담이 돼서 여기 부분은 기록으로 남겨두고 이번 프로젝트는 Certbot으로 진행하였다!
AWS EC2에 HTTPS를 적용하기위해서 AWS의 Certificate Manager(ACM)를 사용해보자.
ACM을 발급하는 지역 선택이 중요한데
로드 밸런서와 동일한 AWS 영역에서 ACM 인증서를 요청하거나 가져와야 하는데, CloudFront 배포는 미국 동부(N.Virginia) 영역에서 인증서를 요청해야 하기 때문이다.
인증서 요청
퍼블릭 인증서 요청
도메인 주소 입력
인증서 요청을 했다고 뜨고, 인증서 나열 목록에서 보면 아직 검증 대기중
, 갱신자격 부적격
으로 뜬다.
왼쪽에 인증서 ID를 클릭해서 Route 53에서 레코드 생성
을 클릭한다.
이후 일정 시간이 지나면 상태가 발급됨으로 변경되는 것을 볼 수 있다.
상태가 계속 부적격으로 떠서 밸런서 생성시에도 인증서 선택 창에서 뜨지 않아서 어떻게 해야하나 했었는데 이 글을 참고해서 레코드 생성까지 해줘야 하는 걸 알았다!
🔍 도메인으로 발급된 인증서를 조회하고 싶다면 이 사이트에서 조회할 수 있다!
Sectigo 에서 운영하는 SSL 인증서 발급 정보 조회 사이트이다.
AWS > EC2 > 사이드바에서 로드 밸런싱 카테고리에서 로드밸런서와 대상그룹에 대해 설정할 수 있다.
아래에 보류 중인 것으로 포함
을 클릭해서 만들어준다.대상 그룹 생성
버튼을 눌러 완료해준다.ELB 로드 밸런서의 주된 목적은 리버스 프록시 역할을 하고 네트워크 또는 어플리케이션 트래픽을 다수의 서버에 분산시켜주는 역할이다. 하지만 SSL 암호화 인증도 함께 지원해서 유용하게 사용할 수 있다.
외부에서 http
로 컨택하게 되면 ELB에서 http
를 https
로 리디렉션 해주는 작업을 수행한다. (Nginx 설정 없이도 가능!)
다음은 로드밸런서 설정을 해주자.
리스너 추가
버튼을 클릭해서 https 443을 추가 → 대상 그룹은 생성했던 대상그룹으로 선택해서 적용로드밸런서 생성
버튼 클릭규칙을 추가해 HTTP 80 포트로 서버에 컨택할 시 ELB의 리스너가 HTTPS 443 포트로 리디렉션해주는 설정을 추가해줄 것이다.
로드밸런서 > 이름 클릭
상세페이지 아래에 HTTP:80
에 대해 리스너 및 규칙 추가
규칙 원하는 이름 설정
조건 유형을 호스트 헤더
로 설정해주고 값은 도메인 주소 (예- example.com)
를 입력해주고 - 확인
규칙 조건 정의 - 다음
규칙 작업 정의
그러면 2개 규칙이 된 것을 볼 수 있다.
로드밸런서 대신 nginx만을 사용할 수 있지만 SSL 인증서 발급과 갱신에서 번거로움이 있을 수 있다.
ELB는 유료 서비스이므로 과금될 수 있음을 유의하자! (요금 참고)
참고