프로젝트 진행 중 HTTPS 프로토콜이 필요해졌다. 사용자의 현재 위치를 가져오기 위해서는 HTTPS 적용이 필수이기 때문이다.
HTTPS는 웹사이트에 SSL 또는 TLS 인증서가 설치되어 있어야 사용 가능한데, 대부분이 유료 인증인지라 학습 목적의 프로젝트에 적용하기는 좀 아까운게 사실이었다. 그래서 무료로 인증서를 발급해주는 Let's Encrypt를 이용하기로 했다.
Ubuntu : 20.04.6 LTS
Nginx : nginx/1.18.0
방법은 다양하게 시도해봤으나 어렵고 계속 실패해서 가장 간단한 방법으로 적용해보고자 Certbot을 활용하였다.
sudo apt install certbot python3-certbot-nginx
- sudo nano /etc/nginx/sites-available/example.com
또는 디폴트일 경우 sudo nano /etc/nginx/sites-available/default- ...
server_name example.com www.example.com;
: 사용할 배포사이트 도메인 입력
...
- sudo systemctl reload nginx
: nginx 재시작
- sudo ufw status
: 방화벽을 사용중이라면 Nginx HTTPS 접속도 허가해준다.
- sudo ufw allow 'Nginx Full'
: Nginx 접속 모두 허가
sudo ufw delete allow 'Nginx HTTP'
: Nginx HTTP 설정은 제거
sudo certbot --nginx -d example.com -d www.example.com
: 인증서를 적용할 사이트 도메인 입력
-> 이메일 입력, 약관 확인(Y), 메일 발송 동의(N), http로 접속시 리다이렉트(2) 입력하면 인증서 발급이 완료된다.
빠르고 쉽게 HTTPS를 적용했다. 다만 Let's Encrypt 인증서는 무료인만큼 유효기간이 3개월로 짧기 때문에 실제 서비스에서는 잘 쓰이지 않으며 만약 쓰려면 자동 갱신 설정을 해야한다고 한다. 이 방법은 원출처에 나와있다.
https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04
https://velog.io/@pinot/Ubuntu-Nginx-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C-CertBot%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-https-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0