AWS

freenom 무료 도메인을 AWS EC2 서버와 연결해 https 적용하기

파란배개 2021. 2. 22. 13:55

한참 도메인과 EC2를 연결시키려고 고생하던 중에 팀원에게 들은 충격적인 사실이 있다.

바로 freenom에서 제공하는 도메인 중 cf와 ml만 AWS 서비스와 연결이 가능하다는 것이다.

처음에 tk 도메인으로 연결시키려고 고생했지만 인증서까지는 얻을 수 있었으나 결국 서버가 연결되지 않았다.

그 말을 듣고 ml과 cf 도메인으로 시도해보니 cf는 ACM에서 인증서를 받지 못했으나 ml 도메인은 정삭적으로 인증서를 받을 수 있었고 실제로 https에서 작동되는 것도 확인했다. freenom 도메인은 ml을 사용하는 편이 좋을 것 같다.

무엇이 원인인지는 정확히 규명할 수는 없었으나 AWS와 freenom을 가지고 한창 씨름중인 분들에겐 귀가 뚫리는 정보일 것이다.


도메인을 EC2 서버와 연결해 https를 적용하는 대략적인 로드맵은 이렇다.

http 서버 인스턴스를 구동(AWS EC2) -> 도메인 구입(freenom) -> route53에서 도메인 등록(AWS route53) -> route53에서 등록한 후 나오는 NS(Name Server) 유형의 네 가지 주소를 freenom 사이트 - services - my domains - manage domain - manage tools - name servers에서 use custom name servers 선택 후 전부 입력(주소 뒤에 .은 빼자) -> ACM에서 도메인의 인증서 발급(AWS ACM) -> ELB 생성(AWS EC2 로드밸런서) -> application load balancer 선택 -> 1 단계 리스너에서 http를 https로 변경하고 가용영역 두 개 이상 체크(EC2 인스턴스를 확인해 가용영역을 확인하고 그 가용영역은 반드시 체크해야 한다) -> 앞에서 만든 인증서가 2단계에서 나타난다. 만약 없다면 인증서 발급을 진행한다 -> 보안그룹은 기본으로 해도 무방하기에 넘어간다 -> 4단계 라우팅 구성에선 http와 EC2 인스턴스에 올린 서버에 설정한 포트번호를 입력한다 나머진 그대로 둔다-> 5단계에선 대상 그룹을 지정한다. 포트번호는 4단계와 마찬가지로 서버에 설정한 포트번호를 입력한 뒤 반드시 '등록된 항목에 추가'를 누른다 -> 마지막으로 검토가 끝나면 생성을 누른다 -> route53에서 도메인 이름을 누른 후 레코드 생성을 누른다 -> 빠른 레코드 생성에서 별칭(혹은 alias 토글을 키고) 트래픽 대상은 Application/Classic Load Balancer에 대한 별칭을 고르고 리전 선택은 앞서 로드밸런서 가용영역 설정 시 확인한 EC2 인스턴스의 가용영역을 고르면 로드 밸런서 선택에서 이미 등록된 ELB를 찾을 수 있는데 그걸 선택한다 -> 끝!

써놓고 보니 대략적이지 않다. 

 

도메인이 DNS 서버에 잘 등록되었는지 확인하기 위해서는 터미널에서 ($ nslookup example.ml)을 입력한다.

server와 address가 뜨면 성공이다.

전부 끝나면 'https://도메인'으로 접속하면 EC2에 올린 서버가 뜰 것이다.

노파심에서 말하지만 https는 http + SSL 인증서이고 위처럼 AWS를 사용한다면 인증서는 AWS 쪽에서 이미 처리했으므로  node js에서는 따로 코드를 수정할 필요는 없다.