이번 글에선 무료 도메인을 발급받고 https를 적용해보겠습니다.
https를 적용한다는 것은 서버에 배포가 되어있는 상태이겠죠!?
(서버에 배포가 되어있다 가정하고 글을 적어보겠습니다.)
1. 무료 도메인 발급받기
https를 적용하려면 먼저 도메인을 발급받아야 합니다.
도메인을 발급받는 방법은 여러가지이지만...(가비아, Route 53 등)
돈은 아끼면 좋으니 여기선 무료 도메인을 발급받겠습니다.
https://xn--220b31d95hq8o.xn--3e0b707e/
1.1 회원가입
1.2 도메인 입력하기
위 검색 결과에서 원하는 도메인을 클릭합니다.
1.3 도메인과 IP 연결하기
위 단계까지 마치면 도메인이 배포되었습니다 ㅎㅎ
아무래도 무료 DNS 서버이다보니 서버가 불안정할 수 있습니다.
실제 배포환경에선 가비아나 Route53을 사용하세요
2. https 적용하기
2.1 서버 접속 후 nginx 다운로드
sudo apt install nginx
설치가 되어있는지 확인해보겠습니다.
sudo service nginx status
Acitve가 active(running) 입니다!
정상적으로 실행중입니다 ㅎㅎ
2.2 certbot 다운로드
certobot에 대해 알아보겠습니다.
- certbot
- https 적용을 위해선 인증서가 필요합니다.
- certbot 은 Let’s Encvrypt에서 제공하는 SSL 인증서 발급 및 갱신 도구입니다.
아래 명령어로 certbot을 설치합니다.
sudo snap install --classic certbot
certbot을 편하게 사용하기 위해 심볼릭링크 설정하겠습니다.
sudo ln -s /snap/bin/certbot /usr/bin/cerbot
심볼릭링크를 왜 설정할까요?
- 기본적으로 certbot은 /snap/bin/certbot 경로에 설치됩니다. (snap으로 설치했으니까!)
- Linux에서 /usr/bin 경로는 사용자 프로그램 실행 파일이 저장되는 디렉토리입니다.
- Linux에서 명령어를 실행할 때 Linux는 미리 설정된 특정 디렉토리에서 실행 파일을 검색합니다.
- 이때 특정 디렉토리들을 $PATH라고 부릅니다.
- $PATH 경로에 포함된 디렉토리 안 프로그램들은 따로 경로 다 적지 않고 프로그램 이름만으로도 실행 가능합니다.
- 대부분 Linux 시스템에서 /usr/bin 은 $PATH 에 포함되어 있습니다.
- snap으로 설치하면 경로가 snap/bin 으로 설정되기에 certbot을 편하게 사용하려고 심볼릭 링크를 설정합니다.
2.3 https 설정하기
https 설정 이전에 80포트가 열려있는지 확인해야합니다.
sudo lsof -i:80
혹시라도 80포트가 사용중이라면 80포트를 사용하고 있는 프로세스를 삭제합니다.
kill -9 {PID번호}
그 후!!
순서대로 실행합니다.
sudo certbot --nginx -d 발급받은도메인주소
e.g) sudo certbot --nginx -d cnergy.p-e.kr
아래 스크린샷엔 없지만 이메일을 입력하는 칸이 있습니다.
거기서 본인이 사용하는 이메일을 입력합니다.
이제 기다리면...
80포트에 https가 잘 적용이 되었습니다!!!
그런데... 현재 저희 서비스는 8080포트에 떠있습니다.
8080포트로 들어가면 아무런 응답이 없습니다 🥲
80포트와 8080포트를 연결시켜 보겠습니다!
이럴 땐 nginx의 리버스 프록시를 사용하면 됩니다.
서버의 터미널에서 아래 명령어를 입력!
vim /etc/nginx/sites-available/default
아래 부분을 찾아서
아래와 같은 형식으로 수정!
지금 저희가 한 일은 [배포한 서버의 url] 로 요청이 들어오면, localhost:8080으로 트래픽을 리다이렉트 시키는 설정을 한 것입니다.(리버스 프록시, 배포한 서비스의 포트로 설정해야합니다!! 저희 프로젝트는 8080포트라 localhost:8080으로 했어요)
그 후 nginx 재시작하면!
sudo service nginx restart
제대로 https 설정이 되었습니다~!
모두 행복한 https 설정 하세요~