certbot 설치 과정은 생략
webroot 방식으로 도메인 소유권에 대해서 인증을 받고 발급 받는 방법을 선택.
nginx 설정
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /var/www/letsencrypt;
}
}
위와 같이 도메인 루트에 대한 액세스를 제공하고 이 경로를 파라메너로 넘긴다.
/var/www/letsencrypt 경로를 생성해 놓지 않으면 에러 발생
sudo certbot certonly --webroot -w /var/www/letsencrypt -d www.mydomain.io -d api.mydomain.io
발급 받은 후 nginx 다시 셋팅
server {
listen 80;
server_name mydomain.io www.mydomain.io;
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /var/www/letsencrypt;
}
location / {
return 301 https://www.mydomain.io;
}
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
...
server_name www.mydomain.io;
ssl_certificate /etc/letsencrypt/live/www.mydomain.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.mydomain.io/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
...
}
sudo crontab -e
# utc+0기준으로 18시는 우리나라 시간으로 새벽 3시 / 마지막 숫자 1은 월요일(0~6) 일요일~토요일
# 아래 명령어는 월요일 새벽3시(우리나라기준) 실행되며 갱신 시 nginx재시작.
0 18 * * 6 /snap/bin/certbot renew --renew-hook="sudo systemctl restart nginx"
기타 명령어
# cerbot 위치 확인
$ which certbot
# Crontab 보기
$ sudo crontab -l
# Crontab 편집
$ sudo crontab -e
# Crontab 실행 로그
$ view /var/log/syslog