[AWS] AWS elastic beanstalk 환경 https 설정
사이드 프로젝트에서 AWS에 배포한 API 서버에 https를 적용한 과정을 정리한다.
개요
- 클라이언트: 웹 어플리케이션
- vercel을 이용해, https 적용하여 배포되어 있음
- 백엔드 API 서버: AWS elastic beanstalk을 이용해 배포되어 있음
- 도메인 적용되어 있음
- 해당 클라이언트에서 https가 적용되지 않은 API 서버로 요청을 보낼 수 없음
- 브라우저 보안 정책에 의해 막혀 있음
- Origin에 대한 고찰을 참고하면, 보안 연결이 적용된 Origin에서 보안 연결이 적용되지 않은 Origin으로 요청하여 자원을 로드하는 것은 옳지 않음
- 작업 내용: AWS certificate manager와 Route 53 서비스를 이용해, AWS elastic beanstalk 환경에 https를 설정함
- certificate manager를 이용해 HTTPS 인증서 발급
- Route 53 서비스에 DNS 레코드 설정
- Elastic Beanstalk 환경 Listener 설정
작업
1. AWS certificate manager에서 인증서 생성
기존에 부여한 도메인을 사용했다.
참고: elastic beanstalk에서 부여한 도메인 사용 시
Elastic Beanstalk 환경 생성 시, 기본으로 부여되는 도메인이 있는데, 해당 도메인을 사용하면 에러가 발생한다.
2. Route 53 CNAME 레코드 생성
해당 인증서의 도메인 검증을 위한 CNAME DNS 레코드를 생성하기 위해, Create Record in Route 53
버튼을 클릭한다.
미리 연결하기 쉽게 되어 있기 때문에, 체크 박스에 체크만 해 주면 된다. CNAME 레코드를 생성하지 않았기 때문에, 해당 도메인에 대한 검증 상태가 pending
인 것을 확인할 수 있다.
DNS 레코드가 생성이 완료되었는지 확인한다.
3. Elastic Beanstalk Listener 등록
이제 Elastic Beanstalk 환경에 https 연결을 위해 443 포트에 대한 Listener 설정을 해 준다. 보안을 위해, HTTP 연결에 대한 listener 설정은 해제한다.
결과
https 요청을 보내 보면 응답이 잘 돌아 오는 것을 확인할 수 있다.
~$ curl -X GET https://adminapi.<<main-domain>>
{"message":"Hello, World!"}
HTTP 연결에 대한 listener 설정을 해제했기 때문에, HTTP 연결 시 아무런 응답도 받을 수 없다.
~$ curl -X GET http://adminapi.<<main-domain>> # 응답 오지 않음
댓글남기기