EC2 HTTPS로 연결하기 (1) - 도메인 구매하고 ACM 인증서 발급하기
<< EC2 HTTPS로 연결하기 >>
1편) 도메인 구매하고 ACM 인증서 발급하기 <-- 현재 글
(도메인 구매 --> 도메인 인증 --> ACM 인증서 발급 --> Target Group 생성 --> Load Balancer 생성 --> 규칙 수정 --> Health check 성공)
2편) 로드 밸런서 사용하고 Health check 통과하기 (링크)
(도메인 구매 --> 도메인 인증 --> ACM 인증서 발급 --> Target Group 생성 --> Load Balancer 생성 --> 규칙 수정 --> Health check 성공)
개요
HTTPS는 SSL이라는 보안 프로토콜 위에서 HTTP 통신을 하는 프로토콜을 뜻합니다. (요즘은 발전된 버전인 TLS 사용)
요즘은 http로 된 주소를 찾아보기 힘들고, 서비스 중인 대부분의 웹사이트는 https 주소를 사용합니다.
https는 구글 검색 엔진에 가산점이 있다.
http는 브라우저에서 보안 위험 표시가 나온다.
클라이언트 서버 배포 시 자주 사용하는 Vercel에서 http 주소를 지원하지 않는다. (프론트는 잘 몰라서 정확한 건 아닙니다)
등 여러가지 이슈가 있습니다.
서버 개발자 입장에서, 그냥 https 사용을 염두에 두는 것이 마음이 편할 지경입니다.
하지만 처음 https 주소를 사용하고자 한다면, 과정이 꽤 길고 복잡합니다.
(물론 이것도 과거에 하나하나 코딩으로 리다이렉트를 하던 것보다는 훨씬 편해진 것이라고 합니다.)
그래서 누구나 쉽게 따라하실 수 있도록
https 주소 사용을 위한 과정을 A to Z로 기록해보고자 합니다.
자세하게 적느라 내용이 길지만, 그만큼 쉽게 따라하실 수 있을테니
절대 포기하지 마시고 끝까지 함께하시길 바랍니다!
사전 필요사항
- EC2 인스턴스 개설
- 실행 가능한 웹 서버
EC2 인스턴스가 개설되고, 그 위에서 웹 서버를 구동할 수 있는 상태를 가정하고 작성하겠습니다.
도메인 구매
특정 IP에 부여된 naver.com, google.com 과 같은 주소들을 도메인이라고 합니다.
https 연결을 위해서는, 도메인을 소유하고 있어야 합니다.
도메인 구매는 AWS에서도 가능하고, '무료 도메인'이라고 검색하면 나오는 방법으로도 가능합니다.
저는 적당히 원하는 도메인을 구매하면서도, 가격이 AWS보다는 저렴한
'가비아'라는 사이트에서 도메인을 구매했습니다. 그 기준으로 내용을 작성해보겠습니다.
위 사이트에 접속합니다.
사용을 원하는 도메인 명을 검색합니다.
woojin 으로 검색했더니 도메인 별 가격이 나옵니다. (가격은 1년 기준입니다.)
EVENT 가격은 최초 1년만 적용되는 가격임에 주의합니다.
연장할 경우 오른쪽의 높은(호구)가격으로 결제됩니다만,
1년이 지나고 연장하지 않으면 자동으로 삭제되니 걱정은 안 하셔도 됩니다. (가비아에 직접 문의해보았습니다.)
원하는 도메인을 선택하여 구매합니다. (shop은 쓰지 말라는 말을 어디서 봤는데.. 정확하지는 않습니다.)
등록 기간을 1년으로 설정하고 (Event 가격 적용을 위해)
나머지 필수 정보를 입력합니다.
네임서버는 타사(AWS) 것을 사용할 예정이지만,
나중에 수정할 것이므로 일단 가비아 네임서버를 사용하고 넘어갑니다.
결제를 마치면, My가비아>이용 중인 서비스>도메인 메뉴에서 나의 도메인을 확인할 수 있습니다.
본 포스팅에서 사용할 도메인을 domain.com이라고 가정하겠습니다.
(실제 사용하고 있는 도메인은 아닙니다.)
'관리' 버튼을 클릭하면,
위와 같은 정보를 확인할 수 있습니다.
도메인 구매를 마쳤으니, 인증서를 발급받아 보겠습니다.
Route 53에서 도메인 인증
인증서 발급에 앞서, 내가 도메인을 소유하고 있다고 인증을 해야 합니다.
먼저 AWS 계정에 로그인 하여 Route 53 서비스에 대시보드로 이동합니다.
호스팅 영역을 생성합니다.
도메인 이름은 위에서 구매한 도메인으로 작성합니다.
나머지는 default를 유지하고 도메인을 생성합니다.
다시 호스팅 영역 탭에서 방금 생성한 호스팅 영역을 클릭하면 위와 같은 화면을 확인할 수 있습니다.
현재 레코드는 NS(네임서버), SOA 유형 각 1개로, 총 2개 존재합니다.
그 중 NS 유형에는 라우팅 대상이 4개 존재합니다.
나중에는 위와 같이 A, NS, SOA, CNAME 4개의 레코드가 존재해야 합니다.
현재는 A, CNAME이 없는데, A는 다음 포스팅에서 만들 것이니 기억만 해주세요.
CNAME은 바로 아래에서, 인증서 발급 후 만들 예정입니다.
이번에는 내가 구입한 가비아의 도메인의 네임서버를,
방금 생성한 도메인 영역의 것으로 바꿔줍니다.
가비아 홈페이지에서 My가비아>이용 중인 서비스>도메인>(내가 구입한 도메인)관리 로 들어갑니다.
설정을 누르고
위의 호스트명을 모두 바꿔주어야 하는데요,
호스팅 영역에서 확인할 수 있던 NS 레코드의 라우팅 대상 4개를 넣어주면 됩니다.
(마지막에 있는 . 은 제거하고 넣습니다.)
소유자 인증까지 마치고 적용을 눌러주면,
AWS에서 해당 도메인이 내 도메인이라는 것을 인식할 수 있습니다!
ACM(AWS Certificate Manager) 인증서 발급 받기
이제, SSL(TSL) 인증서를 발급 받아야 합니다.
위에서 구매한 도메인에 대한 보안 인증서를 발급 받는다고 생각하시면 됩니다.
먼저 Certificate Manager 대시보드로 이동합니다.
설명에 써있듯, SSL/TLS 인증서를 프로비저닝 해줍니다.
구매한 도메인을 입력합니다.
위와 같이 설정(기본값임)하고 요청을 클릭합니다.
DNS 검증은 이메일 검증보다 빠르고 간편하다고 합니다. (자동 갱신도 지원)
사실 이메일 검증은 안 해봐서 모르겠습니다만..
ACM 메뉴(왼쪽)에서 인증서 나열을 클릭하면, 요청한 인증서를 확인할 수 있습니다.
DNS 검증 기준, 검증 대기중 / 아니요 / 부적격 이 나온다면 정상입니다.
이번에는 위에서 말씀드린 대로, CNAME 레코드를 만들어 보겠습니다.
발급 받은 인증서 ID를 클릭합니다.
Route 53에서 레코드 생성을 클릭합니다.
도메인을 체크하면 되는데, 저는 이미 레코드를 생성해서 체크가 되지 않습니다.
체크 후 레코드 생성을 클릭합니다.
이후 일정 시간이 지나면,
상태가 발급됨으로 변경된 것을 확인하실 수 있습니다.
걸리는 시간에 대한 의견이 분분한데요,
대개 20~30분 정도 소요되고, 길면 2시간까지도 걸린다는 것 같습니다.
그 이상 소요된다면, 과정을 점검해서 다시 요청해볼 필요가 있을 것 같습니다.
지금까지 EC2와 HTTPS 연결을 위해,
도메인을 구매하고,
호스팅 영역을 생성해 도메인을 인증하고,
ACM으로 SSL 인증서를 발급받았습니다.
다음 포스팅에서는 발급 받은 인증서를 가지고,
Load Balancer를 통해 EC2로 접근하는 요청을 리다이렉트해서
https로 연결해보도록 하겠습니다.
다음 포스팅 링크 :
감사합니다.