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
'프로그래밍 > 서버, DBMS' 카테고리의 다른 글
[책 요약] Effective SQL - SQL 코딩의 기술 요약 (Ch1. 데이터 모델 설계) (0) | 2021.02.17 |
---|---|
[서버] 작지만 강력한 미니 PC "PN50" - Ryzen 3세대, NUC 대체 (0) | 2020.12.26 |
[서버] NginX에서 Certbot을 통해 간단하게 SSL 발급하기 (0) | 2020.12.12 |
[서버] 도메인으로 NginX에서 Reverse Proxy 설정하기 (0) | 2020.12.12 |
[블로그] Tistory에 도메인 연결하기 (0) | 2020.12.05 |