GCP Compute Engine에 HTTPS 적용하기

Key Kim
8 min readSep 5, 2020

--

이런걸 만들어볼겁니다

최근 WEB-RTC 서비스를 개발하면서, 브라우저에서 Video, audio를 사용하기 위해 HTTPS 적용이 필요한 상황이 생겼습니다.

이를 위해 개인 도메인 주소를 사용하여 GCP Compute Engine에서 Load balancer를 이용하여 HTTPS를 적용한 과정을 정리해봤습니다.

VM 만들기

도메인을 구입했다면, Compute engine 에서 VM을 하나 만들어봅시다.

이 VM은 여러분의 실제 서비스가 올라갈 VM입니다.

HTTP 트래픽 허용을 꼭 체크해주세요

인스턴스 그룹 만들기

VM을 만들었다면, 인스턴스 그룹 만들기에서 새 비관리형 인스턴스 그룹을 아래와 같이 만들어줍니다.

인스턴스 그룹은 연관된 VM들을 모아놓은 집합입니다.

GCP에서는 인스턴스 그룹을 활용해 필요한 인스턴스들을 호출합니다.

인스턴스 그룹 만들기에서 비 관리형 인스턴스 그룹을 선택하고

VM인스턴스 항목에 방금 저희가 만든 VM을 추가해줍니다.

VM 인스턴스에 방금 만든 VM이름을 선택한다.

인스턴스 그룹이 정상적으로 만들어지면 아래와 같이 확인이 가능합니다.

로드밸런서 만들기

이제 https 적용을 위한 부하분산기(Load balancer)를 만들어 봅시다.

부하분산기를 만들어서 인터넷과 연결되는 최앞단에 https를 적용합니다.

이렇게 하면 모든 사용자 접속은 부하분산기를 거치게 됩니다.

우리는 부하분산기 최앞단에 https를 적용하겠습니다.

백엔드를 설정해줍니다.

백엔드는 실행하려는 서비스가 돌고있는 서버입니다.

여기는 https를 적용할 필요는 없으며(프론트에서 적용할 것 이므로)

그저 사용자 요청을 수행할 서비스가 있는 VM을 넣어주면 됩니다.

백엔드 서비스 만들기를 클릭해봅시다.

백엔드 서비스 만들기 클릭

세부적인 설정들이 많지만, 일단 아래와 같이 설정해줍니다.

인스턴스 그룹을 꼭 확인해서 우리가 만든 인스턴스 그룹을 선택해주세요.

하트비트(서버가 죽었나 살았나 확인하는 용도)를 설정해줍니다.

다른 상태 확인 생성을 클릭해 우리가 만든 vm을 넣어줍시다.

이제 실제로 HTTPS가 적용될 프런트 엔드를 설정해봅시다.

프런트엔드는 사용자 요청을 가장 처음 받아들이는 서버입니다.

이곳은 도메인과 연동을 해야하므로 고정 IP가 필요합니다.

IP 주소 만들기를 클릭해줍시다.

IP주소 만들기 클릭

아래와 같이 새로운 고정 IP를 할당합니다.

고정 IP 할당이 끝났으면, SSL을 적용할 인증서를 생성해야합니다.

새 인증서 만들기 클릭
Google에서 관리하는 인증서 만들기 선택

도메인 항목에는 보유하고계신 도메인 주소를 적어줍니다.

저의 경우 keykim.me 라는 도메인을 가지고 있으므로 위와같이 적어주었습니다.

이로써 부하분산기 설정은 모두 끝났습니다.

Cloud DNS 설정하기

모든 내용을 저장하고 이제 DNS 적용을 위해 Cloud DNS로 넘어가봅시다.

DNS 등록을 해봅시다. DNS 이름에 보유한 도메인을 입력해주세요.

위와 같이 설정해주시고, DNS 이름에 보유하고 계신 도메인을 입력해주세요.

만들기를 눌러 DNS를 생성하고, 이제 DNS의 세부설정을 해봅시다.

우리가 가진 도메인을 DNS에 입력하기 위해선 매핑할 IP가 필요하겠죠?

아까 생성한 프론트엔드의 고정 IP를 사용합시다.

다시 Cloud DNS로 돌아와 방금 만든 DNS 서비스를 클릭합니다.

기록 세트 추가를 클릭합니다.

아래와 같이 입력해줍시다.

리소스 레코드 유형을 A로 지정하고, IP주소에 프론트엔드 IP를 넣어줍니다.

프론트엔드 IP를 입력하고, 리소스 레코드 유형을 변경합니다.

변경내용을 저장하면 아래와 같이 나타나야 합니다.

이제 GCP에서 DNS 설정은 끝났고, 보유한 Domain의 네임서버 변경만 남았습니다.

가지고계신 Domain을 GCP가 바라보는 네임서버(NS)를 향하도록 변경합니다.

저의 경우 Godaddy를 통해 구매하였으므로, Godaddy 기준으로 DNS 관리에서 네임서버를 GCP에 적힌 네임서버(NS)로 변경해줍니다.

접속 테스트

이제 작동 테스트를 위해 서버를 설치해봅시다.

VM 인스턴스에서 뒤에서 만든 VM에 다음과 같이 접속합니다.

접속 후 쉘에서 아래 명령어를 입력합니다.

sudo apt update
sudo apt install -y nginx

설치가 모두 끝나면 기재된 외부 IP를 통해서 http 접속을 확인합니다.

서버가 잘 설치되었다면 위와같이 떠야 합니다.

이제 지금까지 우리가 만들어온 부하분산기를 이용해 https 접속을 해봅시다.

보유하고 계신 도메인 이름을 브라우저 창에 입력해봅시다

https://<your-domain>

응..?? 하라는대로 다 했는데 접속이 안되는데요?

저의 경우 https://keykim.me 접속이 바로 되지 않았습니다.

문서를 찾아보니 https 적용에는 약간의 시간이 걸린다고 합니다(30분정도)

https 적용 여부를 확인하기 위해 부하분산기를 클릭해 들어가봅시다.

HTTPS-LB 클릭

인증서 항목을 클릭해봅시다.

도메인 상태는 괜찮은데, 인증서 체인에는 아무것도 안뜨네요.

이런 상황이라면 아직 https 적용이 되지 않은 것 입니다.

공식 문서에 따르면 ACTIVE(녹색)인 상태여도, 인증서 적용까지 30분정도 소요된다고 명시하고 있습니다.

Active라도 인증서 등록까지 30분정도 더 걸릴 수 있다.

30분정도 지나니 아래와 같이 인증서 체인이 표시되고, 정상적으로 인증서 발급이 된 것을 확인할 수 있었습니다.

이제 진짜로 접속을 해봅시다!

번외편

보안을 위해 기존에 http로 접근하기 위해 열어둔 VM의 외부 아이피를 막아줍시다.

이제 우리가 가진 도메인 주소로만 VM에 접근이 가능합니다.

--

--