프로그래밍/서버, DBMS

[서버] NginX에서 Certbot 인증서 자동 갱신하기

포도알77 2020. 12. 14. 18:11

NginX에서 Certbot 인증서 자동 갱신하기

1. certbot + NginX plugin 설치한 경우

 아래와 같이 nginx 플러그인으로 설치한 경우 자동으로 Site conf에 SSL 인증서와 Redirection 옵션(선택시)이 들어간다.

sudo apt-get install software-properties-common
sudo apt-get update

sudo apt-get install certbot
sudo apt-get install python-certbot-nginx

sudo certbot --nginx

 

 이 경우에는 인증서 갱신시에 NginX를 켰다 끌 필요 없이 아래의 명령어를 사용하면 된다.

sudo certbot renew --nginx

 

 

이제 이 내용을 crontab에 넣는다. 0 */12 * * *은 매 12시간마다 갱신을 시도하는 것이다. 갱신의 경우 아직 기간이 많이 남아 있으면 갱신이 취소된다. (만약 /etc/cron.d/certbot에 없다면 만들어주고 /etc/cron.d에 certbot을 추가해준다.)

//원하는 편집기 사용
sudo vim /etc/cron.d/certbot

//-------------/etc/cron.d/certbot 내용------------------------
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 */12 * * * root certbot -q renew --nginx

 

2. Certbot standalone으로 설치한 경우

 아래와 standalone으로 설치한 경우, 80번 포트를 통한 인증 후 SSL만 받은 것을 의미한다.

sudo apt-get install certbot

sudo certbot certonly --standalone -d example.com
// /etc/letencrypt/live/example.com에 인증서 발급됨

 

 이 경우에는 재갱신을 위해서 아래의 명령어를 실행해준다.

pre-hook과 post-hook은 갱신 전에 nginx를 잠깐 멈추고 갱신 후 다시 시작하는 명령을 포함할 수 있다.

sudo certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start" --dry-run

 

 위 명령을 crontab에 추가한다. (만약 /etc/cron.d/certbot에 없다면 만들어주고 /etc/cron.d에 certbot을 추가해준다.)

서버가 잠깐 꺼졌다 켜지므로, 최대한 사용자가 적은 시간을 골라서 실행하자. 0 4 * * *는 매일 오전 4시에 갱신을 시도한다.

//원하는 편집기 사용
sudo vim /etc/cron.d/certbot

//-------------/etc/cron.d/certbot 내용------------------------
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 4 * * * root certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start" --dry-run

 

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사