crontab을 이용해서 Let’s Encrypt SSL 인증서 자동갱신
crontab을 이용해서 Let’s Encrypt SSL 인증서 자동갱신
crontab을 이용해서 Let’s Encrypt SSL 인증서 자동갱신
crontab은 Unix 및 Unix 계열 운영 체제에서 주기적으로 실행되는 작업을 예약하는 데 사용되는 시스템 유틸리티입니다. crontab은 “크론 테이블”의 줄임말로, 사용자가 일정한 간격으로 명령을 실행하도록 예약할 수 있게 해줍니다. 이는 주기적으로 반복되는 작업을 자동화하는 데 유용합니다.
crontab 새로운 명령어 만들기
-e
옵션으로 텍스트 폅집기로 명령을 수정하거나 추가할 수 있습니다.
crontab -e
예제로 crontabb에 certbot을 이용하여 인증서를 갱신하는 명령을 추가합니다. crontab의 format은 아래와 같습니다.
0 1 * * 1 sudo certbot renew --nginx
| | | | | |
min hour day month weekday 명령어
(0은 일요일)
crontab guru를 이용하면 시간 format의 주기를 확인할 수 있습니다. 위의 시간은 At 01:00 on Monday
을 의미합니다.
crontab 명령어 확인하기
-l
옵션으로 텍스트 폅집기로 명령을 확인할 수 있습니다.
crontab -l
0 1 * * 1 sudo certbot renew --nginx
crontab 시작/중지/재시작
크론탭의 명령어를 추가하거나 변경했다면 crontab을 재시작해야 합니다. 아래 명령을 이용해서 cron 데몬의 상태 시작/중지/재시작 및 상태를 확인할 수 있습니다.
service cron start
service cron stop
service cron restart
service cron status
인증서 갱신 테스트
--dry-run
옵션을 사용하면 실제 갱신 명령을 수행전에 오류를 확인할 수 있습니다. 갱신은 갱신종료일 20일 전에 가능합니다.
sudo certbot renew --dry-run
인증서 갱신 날짜 확인하기
갱신 명령을 수행하면 갱신 종료일이 얼마나 남았는 지 확인할 수 있습니다. 갱신종료까지 62일 남은 것을 알 수 있습니다.
certbot certificates
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: ...
Expiry Date: 2024-02-05 17:01:07+00:00 (VALID: 62 days)
갱신을 위한 명령을 추가합니다.
0 1 * * 1 sudo certbot renew --nginx > ~/crontab-result.log
매주 월요일 1시에 renew 명령을 수행합니다. 실행 결과는 crontab-result.log
에서 확인할 수 있습니다.
References
- https://devlog.jwgo.kr/2019/04/16/how-to-lets-encrypt-ssl-renew/