AWS SSL/TLS 등록하기

Written on September 23, 2019

현재 진행하고 있는 프로젝트에서 소셜 로그인을 구현했는데 localhost에서만 테스트 하다가 AWS EC2 인스턴스에 배포된 서버에서 적용하려니 한 가지 문제에 봉착했다. 페이스북의 경우 정책상 리다이렉트 URL의 스킴이 반드시 https를 사용하도록 되어있기 때문이다. EC2 서버 엔드포인트의 경우 SSL/TLS 설정이 되어있지 않기 때문에 페이스북 소셜로그인 구현을 위해서는 도메인 설정과, SSL/TLS 등록이 필요했다.

현재는 user가 앱에서 바로 EC2로 요청을 보내는데, 이 것을 아래의 그림과 같이 바꿔볼 것이다.

AWS

user가 앱에서 도메인 주소로 요청을 보내면, Route 53이 도메인과 연결된 서버를 찾아가고, Elastic Load Balancer와 EC2 사이에 SSL/TLS 인증서가 등록되어 있어 HTTPS 통신이 가능하다.

AWS Certificate Manager에서 인증서 발급

AWS Certificate Manager에서 SSL/TLS 인증서를 발급받을 수 있으므로 AWS Certificate Manager에 접속하여 [공인 인증서 요청]을 선택하고, 도메인을 입력한다. 다음으로 AWS Certificate Manager(ACM)에서 사용자의 인증서 요청을 검증하는 방법을 선택해야 하는데 [이메일 검증]으로 선택했다. 검증 요청을 하면 도메인을 등록한 이메일로 안내 메일이 발송된다. 이메일에 SSL/TLS certificate 요청 도메인 정보와 요청자의 AWS account ID 등의 정보와 승인을 위한 링크가 삽입되어 있는데 링크로 이동해 ‘I approve’를 클릭한다. 이제 AWS Certificate Manager 페이지로 돌아가서 해당 도메인에 ‘발급 완료’가 뜨면 발급이 완료된 것이다.

로드 밸런서(Elastic Load Balancer) 생성

로드 밸런서는 로드 밸런서가 관리하는 서버들에 골고루 트래픽을 분산시키는 역할을 한다. Route 53에 로드밸런서를 연결 할 것이기 때문에 로드 밸런서에 인스턴스를 대상그룹으로 추가하는 것이다. EC2 대시보드로 이동해 ‘로드 밸런서’를 선택하고, ‘로드 밸런서 생성’을 클릭하고 ‘Classic Load Balancer’를 선택한다. 로드밸런서 이름을 입력하고, 리스너에 ‘HTTPS’를 추가한다.
다음 단계는 보안 그룹 구성으로 http와 https를 허용하는 보안그룹을 선택하거나 생성한다.
다음 단계에서 ACM에서 인증서 선택 (권장)을 선택하면 인증서가 자동으로 추가된다. 다음으로 상태구성 페이지는 기본값 그대로 두고 EC2 인스턴스 추가 페이지로 넘어가 SSL/TLS 인증서를 등록하고자 한느 인스턴스를 선택하여 추가한다. 검토 후 생성을 클릭하면 완료!
추가적으로, 로드밸런서와 서버를 연결해 놓았기 때문에 서버가 리슨하고 있는 특정 포트가 있다. 이 것을 로드밸런서에 알려주기 위해 해당 로드밸런서의 리스너 메뉴를 클릭하여 HTTP와 HTTPS의 인스턴스 포트를 변경해 준다.

Route 53에 도메인 연결

Amazon Route 53은 Domain Name System(DNS) 서비스로 도메인 이름으로 접속하면 이를 해당 서버 IP 주소로 변환해주는 시스템이다. Route 53에서 바로 도메인을 구매 할 수도 있고, 이미 보유하고 있는 도메인이 있다면 호스팅만 관리해 줄 수도 있다.

이미 도메인은 보유하고 있기 때문에, Amazon Route 53 콘솔에서 ‘DNS 관리’ ‘호스팅 영역 생성’를 선택하여 도메인을 등록하고 ‘레코드 세트 생성’을 클릭한다. 여기까지 하면 우측에 레코드 세트 생성에 대한 설정값들이 나오는데, 유형은 A-IPv4 주소로 두고, 별칭을 ‘예’로 선택하면 별칭 대상을 선택할 수 있는데, 이전에 생성한 로드밸런서로 선택한다.

그리고 이미 생성되어 있는 NS 레코드 세트를 선택하면, 서버의 도메인 이름들이 나온다. 이것을 도메인을 구입한 사이트의 관리 메뉴로 가 네임서버 정보를 입력하면 된다.

이제 htts 통신이 가능하니 facebook 소셜로그인도 구현 가능 !

👩🏻‍💻 배우는 것을 즐기는 프론트엔드 개발자 입니다
부족한 블로그에 방문해 주셔서 감사합니다 🙇🏻‍♀️

in the process of becoming the best version of myself