Letsencrypt는 SSL 인증서를 발급해주는 CA로, 무료로 SSL 인증서를 발급해주는 기관이다.
sudo apt update
sudo apt upgrade
라는 명령어들을 통해 Ubuntu 소프트웨어 저장소를 최신상태를 만든다.
그 후,
sudo add-apt-repository ppa:certbot/certbot
sudo apt install python3-certbot-nginx
라는 명령어를 통해 Certbot
을 설치한다.
sudo certbot --nginx -d 도메인 네임
이라는 명령어를 통해 배포를 한다. 그렇게 되면 밑과 같은 화면이 뜬다.
여기서 Certificate is saved at이라고 되어 있는 부분에서 fullchain.pem과 privkey.pem의 위치를 복사해두어야 한다. 그리고, Successfully deployed certificate for 도메인명 to /etc/nginx/sites-enabled/default
라는 구절이 있으므로 해당 파일을 편집해준다.
/etc/nginx/sites-enabled/default
디렉터리에서 HTTPS를 설정할 도메인을 입력해준다. (해당 파일의 맨 밑에 아래의 블럭 내용을 입력해주면 된다.)
server {
listen 80;
server_name 인스턴스 IPv4 주소;
return 308 https://$host$request_uri;
}
이 블럭은 80번 포트(HTTP)로 들어오면 301(redirection)을 통해 https로 이동하도록 하는 블록이다.
거기에,
server {
root /var/www/html/dev; # 배포할 홈페이지 파일 디렉터리
index index.html index.htm index.nginx-debian.html index.php;
server_name 배포할 서버 이름;
location / {
try_files $uri $uri/ =404;
}
listen 443 ssl; # managed by Certbot
ssl_certificate (2)에서 발급한 fullchain.pem의 경로;
ssl_certificate_key (2)에서 발급한 privkey.pem의 경로; #
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
이런 항목들을 추가한 후,
sudo nginx -t
라는 명령어를 통해 지금까지 변경한 내용들이 이상없는지 확인한 후 이상이 없다면
sudo systemctl reload nginx
sudo service nginx restart
라는 명령어들을 통해 재시작해주면 변경된 내용들이 저장된다.
sudo nginx -t
에서 오류가 나서 에러 로그 조회를 위해
cat /var/log/nginx/error.log
라는 명령어를 조회해보았더니
밑과 같은 오류가 났다. 이는 location 쪽에서 /와 = 사이에 띄어쓰기를 하지 않아 생긴 오류였다. 띄어쓰기 역시 고려하며 파일을 작성하자!