[AWS+배포] Sub Domain에 HTTPS 인증받기

Sub Domain에 HTTPS 인증 받기

기존 도메인, 서브 도메인(dev, prod)에 HTTPS 인증을 받아보자.

Sub Domain

서버 개발의 니즈에 맞게 도메인과 서브 도메인이 필요하고, 모두 HTTPS 인증을 받아야 하는 상황이라고 하자.

기존의 도메인 -> nginx의 Default 페이지
prod 도메인 -> 5000번 포트의 스프링 부트 프로젝트
dev 도메인 -> 단순한 html 파일

로 연결하고 HTTPS 인증까지 받아보자.

순서

도메인을 구입한 뒤, 처음엔 certbot으로 HTTPS 인증을 먼저 받고 서브도메인을 nginx 설정에서 건드리려고 하니 의도치 않은 리다이렉션이 되고 생각보다 오류가 많았었다.
이를 방지하기 위해 도메인을 구입한 뒤 nginx로 도메인, 서브도메인을 서버와 연결하고 그 뒤에 HTTPS 인증을 받는 것이 맞는 순서라고 할 수 있다.

도메인 구입

1

가비아에서 도메인을 구입한 뒤 다음과 같이 설정해 준다.
가장 위의 값은 서버의 ip 주소를 입력해 준다.

nginx 설정

ubunto에서 nginx를 설치한 뒤 세팅을 변경하지 않았다면, /etc/nginx/sites-available/default에 nginx의 설정 내용이 있을 것이다.
해당 파일의 다음의 내용을 추가해 주자.

prod 도메인

server {

        root /var/www/html/prod;

        server_name prod.yogiyo-backend.shop;

        location / {
                proxy_pass http://localhost:5000;
        }
}

prod는 5000번 포트와 연결할 것이므로 다음과 같이 설정해 주었다.

dev 도메인

server {

        root /var/www/html/dev;

        index index.html;

        server_name dev.yogiyo-backend.shop;

        location / {
                root /var/www/html/dev;
        }
}

dev 도메인에는 간단한 html만 띄울 것이므로 다음과 같이 설정해 주었고, 해당 경로에 index.html을 원하는 대로 만들어주자.

cetbot으로 HTTPS 인증

위와 같이 서브도메인에 대한 경로 설정이 끝난 상태에서여야 HTTPS 인증 후의 설정이 추가되어도 서브도메인과 포트를 원하는 대로 연결할 수 있다.

서버로 접속한 뒤 sudo su로 권한을 받고 다음과 같이 저장소 정보를 불러와 certbot을 설치한다.

$ apt-get update

$ apt-get install software-properties-common

$ add-apt-repository ppa:certbot/certbot

$ apt-get update

$ apt-get install certbot python3-certbot-nginx

현재 상황에선 세 가지 도메인 모두 HTTPS를 원하므로 다음과 같은 명령어를 입력한다.

$ certbot –nginx -d yogiyo-backend.shop -d dev.yogiyo-backend.shop -d prod.yogiyo-backend.shop

주소가 이상 없고 위의 세팅들도 이상 없다면 HTTPS 인증이 진행된다.

2

중간에 HTTP 프로토콜로 접속했을 때 자동으로 HTTPS로 리다이렉션 시켜주냐는 물음에는 YES라고 대답한다.

확인

세 가지 주소 모두 HTTPS로 접속되며, 설정했던 서로 다른 페이지들이 의도대로 나오는지 확인해본다.

3
nginx default 페이지

4
스프링 시큐리티까지 세팅한 페이지라서 정상적으로 로그인 페이지가 나온다.

5
의도했던 간단한 html 파일이다.