안녕하세요?
지난 번 포스트에서 저희의 사이트 도메인 설정을 마쳤습니다.
그런데, 등록한 사이트에 들어가면 URL 입력 창 옆에 아래 이미지처럼 '주의요함'이라는 문구가 있습니다.
이를 클릭해보면
HTTPS 연결이 사용되지 않았다고 뜨는데,
이렇게 되면 사이트 방문자들이 꺼려하게 될 수 있겠죠?..
그래서 오늘은 HTTPS 방식으로 연결할 수 있도록 SSL 인증서를 등록해보도록 하겠습니다.
SSL 인증서? HTTPS 란?
SSL, HTTPS 에 대해서 간단히 설명을 드리자면
- SSL(=TLS) : SSL인증서를 통해 서버의 신원을 확인하고, 데이터를 암호화하여 통신하는 보안 방식
- HTTPS : 공인된 '인증 기관'에게 내 서버의 '주민등록증'(SSL인증서)을 발급받고, '브라우저'와 통신할 때마다 제시하며 인증받은 서버임을 알리는 방식(HTTPS)
AWS Certificate Manager 를 이용한 인증서 생성
AWS Certificate Manager 로 들어가서 '인증서 요청'을 클릭합니다.
아래의 화면이 뜨면 '퍼블릭 인증서 요청'이 선택된 상태로 '다음' 을 누르고,
아래와 같이 [본인의 사이트 도메인]을 입력하고
'이 인증서에 다른 이름 추가' 버튼을 누른 후
*.[본인의 사이트도메인]을 입력하여 줍니다.(www.mysite.com, mysite.com 모두 처리되도록 하기 위함입니다.)
나머지 부분은 모두 기본값 그대로 냅두고,
그러고 '요청' 버튼을 누르고 나면 아래와 같이 인증서 목록에 방금 입력한 도메인에 대한 인증서가 '검증 대기 중' 상태로 들어갑니다.
해당 인증서 ID를 클릭하고 들어가면 아래와 같이 인증서 화면이 뜨는데,
거기서 'Route 53에서 레코드 생성' 버튼을 눌러줍니다.
아래의 화면이 나오면 '레코드 생성' 버튼을 눌러줍니다.
레코드 생성이 완료되고 '도메인' 화면에서 잠시 대기해주시면(최대 30분 소요)
이렇게 상태가 '발급됨'으로 바뀌게 됩니다.
AWS EC2 Load Balancer(ELB) 생성하기
위에서 발급한 인증서를 저희 EC2에서 사용하려면 로드밸런서(ELB)라는 것을 통해 작업을 해주어야 합니다.
(여기서 로드밸런서의 역할이 궁금하시다면 TODO 포스트 확인해주세요!)
저희는 아직 ELB를 만든 것이 없기 때문에 EC2 대시보드 로 가서 아래와 같이 로드밸런서 를 찾아 클릭해줍니다.
아래의 창이 나오면 'Create Load Balancer' 를 클릭하고,
아래의 창에서 맨 첫번째 'create' 버튼을 누릅니다.
아래 창이 뜨면 'Load balancer name'에는 본인의 사이트 명을 입력해주시고
아래의 매핑 부분은 본인의 리전을 고려해서 체크해주시면 됩니다.(저는 us 리전이고, 서울 리전인 분들은 ap- northeast로 뜨실 것입니다.)
security group 은 본인의 ec2에서 아용하던 보안그룹을 선택해주시면 됩니다.
리스너 설정에서는 아래와 같이 기본값으로 80 포트가 들어가있으나
'Add listner'버튼을 눌러서
아래와 같이 'HTTPS' 프로토콜로 443 포트를 추가해줍니다.
그리고 아래의 'Create target group' 을 눌러줍니다.
아래와 같이 타겟 그룹을 만드는 화면이 뜨는데,
아래의 Target Group Name만 입력해주시고, 나머지는 기본값으로 두시면 됩니다.
'Next' 버튼을 누르면 아래의 화면이 뜨는데,
위의 화면에서 해당 타켓을 사용할 ec2 인스턴스를 선택하고 'Create target group'을 클릭합니다.
다시 ELB 생성 화면으로 돌아와서
80번 포트와 443번 포트의 'Select a target group'을 선택해보시면
방금 생성한 타겟 그룹이 들어가있습니다.(조회가 안된다면 우측의 새로고침 버튼 클릭)
80, 443 번 포트 모두 해당 타겟 그룹을 선택해줍니다.
그리고 하단의 ssl 인증서 부분에 위에서 ACM을 통해 만든 인증서를 선택해줍니다.
여기까지 설정 후 아래의 'Create load balancer'버튼을 눌러서 생성을 완료합니다.
HTTP > HTTPS redirect 설정
'View load balancer' 버튼을 클릭하여 로드밸런서 목록을 확인하고
방금 만든 로드밸런서의 Name 을 클릭하여 아래의 화면을 띄우고
하단의 80번 리스너를 클릭하고, 아래의 창이 뜨면 'Edit' 버튼을 눌러줍니다.
아래의 창이 뜨면 기본으로 있는 'Forward to' 액션을 Remove 해버리고
Add action 버튼 클릭 후 'Redirect' 를 선택하여
아래와 같이 입력해줍니다.
그리고 완료를 하면 http 요청을 https 로 redirect 해줄 수 있게 됩니다.
Route 53 및 보안그룹 수정
Route 53 으로 다시 들어가서 '호스팅영역'에서 우리가 만든 호스팅 영역 세부정보 보기를 클릭하면
아래와 같이 유형이 'A' 인 레코드가 있습니다.
이를 클릭하고 아래의 이미지처럼 우측 상단에 나오는 레코드 편집 버튼을 누릅니다.
그리고 아래와 같이 수정하고 저장을 합니다.
여기서 리전은 본인이 위에서 로드밸런서를 생성한 리전이므로, 본인에 맞게 선택해주시면 됩니다.
그리고 ec2 보안그룹에 가서 저희가 사용하는 보안그룹의 인바운드 규측을 클릭하고,
'인바운드 규칙 편집' 버튼을 누릅니다.
아래와 같이 443 포트를 추가해줍니다.
이러면 모든 세팅이 끝났습니다.
이제 우리의 사이트로 다시 들어가보면!
드디어 아래와 같이 https 연결이 되는데
큰 문제가 생겼습니다.
503 에러가 뜨는 것인데요..
무엇인가가 잘못 된 것이 있는 것 같습니다.
타겟 설정해주기
EC2 대시보드에서 아래의 '로드 밸런싱' 의 '대상그룹'을 클릭하시고,
저희가 위에서 만든 타겟 그룹 클릭하고 'Targets' 탭을 클릭해주시면 타겟이 비어있는 것을 볼 수 있습니다.
위의 화면에서 'Register targets'를 눌러주시고
아래와 같은 화면이 뜨면, 알맞은 인스턴스 클릭 후 'Include as pending below'를 눌러주면
하단의 Targets에 리스트가 1개 추가되게 됩니다.
그리고 'Register pending targets'을 눌러줍니다.
여기까지 하고 사이트를 재접속하면 https 연결로 사이트가 정상적으로 뜨는 것이 확인이 됩니다!
수고 많으셨습니다!!
Reference
https://jjong-factory.tistory.com/92