![시스템 타이머를 홀수 및 특정 일수로 설정](https://linux55.com/image/159573/%EC%8B%9C%EC%8A%A4%ED%85%9C%20%ED%83%80%EC%9D%B4%EB%A8%B8%EB%A5%BC%20%ED%99%80%EC%88%98%20%EB%B0%8F%20%ED%8A%B9%EC%A0%95%20%EC%9D%BC%EC%88%98%EB%A1%9C%20%EC%84%A4%EC%A0%95.png)
저는 CentOS 7 서버에서 systemd.timers를 사용하고 있으며 Certbot에서 관리하는 Let's Encrypt 웹 사이트 인증서를 자동으로 갱신하도록 타이머를 설정했습니다.
자동 갱신.서비스:
[Unit]
Description=certbot certificate auto-renewal service file
[Service]
Type=simple
ExecStart=/usr/local/sbin/certbot-auto renew
[Install]
WantedBy=multi-user.target
자동 갱신.타이머:
[Unit]
Description=Renew certs every 10th every 3 months
[Timer]
OnCalendar=*-2,5,8,11-10 08:00:00
Persistent=true
Unit=certbotautorenewal.service
[Install]
WantedBy=multi-user.target
문제는 내가 아는 한 OnCalendar 이벤트의 경우 타이머를 특정 날짜(예: 매월 15일 또는 3개월마다)로만 설정할 수 있지만 Let's Encrypt 인증서는 일정 기간이 지나면 만료된다는 것입니다. 특정 일수(90). 인증서를 더 일찍, 예를 들어 83일마다 또는 2개월 반마다 갱신하고 싶습니다. Let's Encrypt 만료 봇이 60일마다 갱신을 권장한다는 것을 알고 있지만, 인증서가 30일이 아닌 20일 후에 만료되면 만료 알림 메시지가 나타나기 시작하기 때문에 별로 신뢰하지 않습니다. 만료될 때 인증서를 갱신하고 싶지 않지만 업데이트 명령이 무시되고 한 달 후에 마침내 필요할 때 인증서가 없기 때문에 아직 만료되지 않았습니다. 지금은 각 갱신 후 며칠 전에 "3개월마다 언젠가" 갱신 시간을 설정해야 하는 투박한 해결 방법을 사용하고 있습니다. 실용적인 해결책이 있나요? 어떤 이유로 certbot은 CentOS 7에서 cron 대신 systemd 타이머를 강제로 사용하기 때문입니다. 어쩌면 타이머 구문에 빼기 옵션이 숨겨져 있을까요? 또는 예를 들어 bash를 사용하여 달력을 날짜와 동기화합니다.