crontab을 이용해서 Let’s Encrypt SSL 인증서 자동갱신

crontab을 이용해서 Let’s Encrypt SSL 인증서 자동갱신

DevOps
crontab을 이용해서 Let’s Encrypt SSL 인증서 자동갱신
Author

gabriel yang

Published

December 5, 2023

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

  1. https://devlog.jwgo.kr/2019/04/16/how-to-lets-encrypt-ssl-renew/