crontab을 이용해서 Let’s Encrypt SSL 인증서 자동갱신
crontab을 이용해서 Let’s Encrypt SSL 인증서 자동갱신
DevOps
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/