서버를 띄우고 나면 IP 주소로 접속하게 된다. 퍼블릭 IP는 외워지지 않고, 인스턴스를 다시 만들면 바뀐다. 전날 정리한 AWS 인프라 구성에 이어, 그 서버들에 이름을 붙이는 과정을 정리한다.
AWS에서 이 일을 맡는 서비스는 Route 53이다. Route 53은 두 가지 일을 한다. 도메인을 대신 등록해 주는 일과 도메인 이름에 IP 주소를 연결해 돌려주는 DNS 서버 일이다. 여기에 HTTPS를 쓰려면 필요한 SSL 서버 인증서 이야기를 덧붙인다.
도메인 등록은 상위 도메인 관리 조직에 대신 요청해 주는 일이다
도메인을 등록한다는 것은 상위 도메인을 관리하는 조직에 내 도메인을 요청해서 받아 오는 것이다. 예를 들어 jpub.co.kr이라는 이름을 쓰려면 .co.kr을 관리하는 조직에 요청을 보내야 하고, 요청이 통과되면 그 도메인을 얻는다.
이 요청과 관리를 대행하는 회사가 전 세계에 여럿 있고, Route 53을 쓰면 AWS가 그 대행을 맡는다.
DNS 서버를 직접 세우는 방법도 있다. EC2 인스턴스에 오픈 소스 DNS 서버를 올리면 된다. 그래도 Route 53을 쓰는 이유는 안정성과 비용 대비 성능, 그리고 로드밸런서와 바로 연결된다는 점이다.
DNS 서버는 퍼블릭과 프라이빗으로 나뉜다
Route 53이 DNS 서버 역할을 한다는 건, 특정 도메인 이름에 대한 IP를 관리하고 질의가 오면 그 IP를 돌려준다는 뜻이다. 이 역할은 두 종류로 나뉜다.
| 항목 | 퍼블릭 DNS | 프라이빗 DNS |
|---|---|---|
| 도메인 이름 취득 | 필요 | 불필요 |
| 관리하는 IP 주소 | 퍼블릭 IP 주소 | 프라이빗 IP 주소 |
퍼블릭 DNS는 인터넷에서 찾아올 이름을, 프라이빗 DNS는 VPC 안에서만 부를 이름을 관리한다. 프라이빗 쪽은 밖으로 드러나지 않으니 도메인을 살 필요가 없고, home 같은 이름을 그냥 붙여도 된다.
콘솔에서 보면 두 쪽 모두 구조가 같다. 호스팅 영역 목록에 도메인 이름이 있고, 도메인 하나를 열면 그 아래 레코드 목록이 나온다.
퍼블릭 호스팅 영역: aws-intro-sample.com
| 레코드 이름 | 레코드 유형 | 값 |
|---|---|---|
| bastion | A | bastion 서버의 퍼블릭 IP |
| www | A | 생성한 로드밸런서 선택 |
www는 IP 대신 로드밸런서를 고른다. Route 53의 별칭(Alias) 레코드다. 앞에서 Route 53과 로드밸런서가 바로 연결된다고 한 장점이 이 부분이다.
프라이빗 호스팅 영역: home
| 레코드 이름 | 레코드 유형 | 값 |
|---|---|---|
| bastion | A | 프라이빗 IP |
| web01 | A | 프라이빗 IP |
| web02 | A | 프라이빗 IP |
| db | CNAME | DB 엔드포인트 |
같은 bastion이 퍼블릭 쪽에서는 퍼블릭 IP로, 프라이빗 쪽에서는 프라이빗 IP로 등록된다. 밖에서는 bastion에 접속하고, 안에서는 web01, db 같은 이름으로 서버끼리 부르는 구성이다. db만 CNAME인 이유는 DB가 IP가 아니라 엔드포인트라는 이름으로 주어지기 때문이다.
HTTPS에는 SSL 서버 인증서가 필요하다
HTTP와 달리 HTTPS는 데이터를 암호화한다. 브라우저가 웹 서버로 보낸 암호화된 데이터는 사이트 운영자가 가진 비밀키로 원래 데이터로 되돌린다.
문제는 운영자가 아닌 누군가가 운영자로 위장한 피싱 사이트를 세워 데이터를 훔칠 수도 있다는 점이다. 암호화만으로는 상대가 진짜인지 알 수 없다. 그래서 위장하지 않았음을 보증하는 회사가 있고, 이를 인증기관이라 부른다. 그 보증을 증명하는 것이 SSL 서버 인증서다. 브라우저 주소창의 열쇠 아이콘을 누르면 이 인증서를 볼 수 있다.
SSL 서버 인증서는 무엇까지 보증하느냐에 따라 세 단계로 나뉜다.
도메인 검증(DV) 인증서: 도메인 이름이 올바름을 보증한다.
조직 검증(OV) 인증서: 도메인 이름과 함께 도메인을 관리하는 회사명을 보증한다.
확장 검증(EV) 인증서: 도메인을 관리하는 회사가 실제로 존재하는지, 신뢰할 만한지까지 보증한다.
아래로 갈수록 조사가 엄격하고 비용도 오른다.
AWS도 인증기관 기능을 갖고 있어서 AWS에서 구축하는 사이트에 쓸 SSL 서버 인증서를 무료로 발급한다. 다만 발급하는 것은 도메인 검증(DV) 인증서뿐이다.
정리
Route 53은 도메인 등록 대행과 DNS 서버, 두 가지 일을 한다.
퍼블릭 DNS는 도메인을 사서 퍼블릭 IP를, 프라이빗 DNS는 도메인 없이 프라이빗 IP를 관리한다.
로드밸런서는 IP 대신 별칭 레코드로, DB는 엔드포인트를 CNAME으로 연결한다.
AWS가 무료로 발급하는 SSL 서버 인증서는 DV 인증서뿐이다.
퍼블릭과 프라이빗 호스팅 영역에 같은 이름을 두고 IP만 다르게 넣는 구성은 처음 보면 헷갈린다. 밖에서 부르는 이름과 안에서 부르는 이름을 나눠 두는 것이라고 보면 정리가 된다.
참고자료
Amazon Route 53에 도메인 등록 — Route 53의 도메인 등록 기능
프라이빗 호스팅 영역 작업 — VPC 안에서만 쓰는 호스팅 영역
별칭 레코드와 비별칭 레코드 중 선택 — 로드밸런서를 레코드 값으로 고를 때의 별칭 레코드
AWS Certificate Manager란 무엇입니까? — AWS에서 SSL/TLS 인증서를 발급하는 서비스