/* Created Date: 2022-12-14 (Wed) Author: Doyoon Jung(정도윤) / rabbit.white@daum.net Subject: Let's Encrypt SSL - renew and crontab guide with Ubuntu 22.04 Description: */ Let’s Encrypt에서 발급하는 인증서는 90일짜리 인증서이다. 적어도 3개월에 한 번은 갱신을 해야 한다는 뜻이기도 한다. 1) 갱신 테스트 아래 명령어로 실제 갱신이 아니라 잘 갱신되는지, 명령에 오류가 나진 않는지 등을 테스트 해 볼 수 있습니다. # sudo letsencrypt renew --dry-run 2) 갱신하기 --dry-run만 빼고 실행하시면 됩니다. # sudo letsencrypt renew 3) 인증서 만료일 확인하기 letsencrypt로 부터 발급받은 인증서들에 대한 정보를 표시합니다. # sudo letsencrypt certificates 4) 자동 갱신하기 Crontab은 정해진 일시에 반복적으로 특정 작업을 할 수 있는 프로그램이고 우분투에 기본적으로 설치되어 있음. 간단한 Crontab 명령과 규칙을 살펴보자. # Crontab 보기 sudo crontab -l # Crontab 편집 sudo crontab -e # Crontab 실행 로그 sudo view /var/log/syslog crontab 명령어 앞에 sudo를 써준 것은 root 권한의 크론탭을 수정하고 보겠다는 의미이다. 각자 웹서버와 인증서를 관리하는 사용자 계정의 크론탭을 이용하면 된다. letsencrypt를 그냥 설치했을 때 /etc/letsencrypt에 인증서를 쓸 권한이 필요하므로 여기서는 sudo 를 붙여주었다. 규칙 # ----------------------------- min (0 - 59) # | ------------------------------ hour (0 - 23) # | | ------------------------------- day of month (1 - 31) # | | | ------------------------------ month (1 - 12) # | | | | -------------------------------- day of week (0 - 6) (0 to 6 are Sunday to # | | | | | Saturday, or use names; 7 is also Sunday) # | | | | | # | | | | | # | | | | | # * * * * * command to execute 위처럼 분, 시, 일, 월, 요일, 명령 순서로 기재하면 된다. 예를 들어, /home/user/run.sh를 실행하고 싶다면, # 매 시 10분에 $ 10 * * * * /home/user/run.sh # 10분 마다 주기적으로 $ */10 * * * * /home/user/run.sh # 토요일 새벽 3시에 $ 0 3 * * 6 /home/user/run.sh 이렇게 하면 된다. * 인증서 갱신하기 만약 매주 월요일 새벽 5시 10분에 인증서를 갱신 및 로그를 출력하고 싶다면 아래와 같이 설정하면 된다. 10 5 * * 1 /usr/bin/letsencrypt renew --deploy-hook="sudo service apache2 reload" >> /var/log/letsencrypt/letsencrypt-renew.log 뒤에 나오는 --deploy-hook은 인증서 갱신을 성공적으로 마치면 Apache2를 재시작하기 위해 넣어주었다. 인증서 갱신 전에 실행되는 --pre-hook도 있다.