我在 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天甚至两个半月更新一次。我知道 Let's Encrypt 到期机器人建议每 60 天续订一次,但我不太相信它,因为当证书在 20 天而不是 30 天后到期时,就会开始出现到期通知消息。我不想在证书到期时续订证书尚未到期,因为更新命令将被忽略,当一个月后最终需要它时,它不会在那里。现在,我使用一种笨拙的解决方法,必须在每次续订后提前几天设置“每 3 个月的某一天”续订时间。有没有实际的解决方案?因为出于某种原因,certbot 强制在 CentOS 7 上使用 systemd 计时器而不是 cron。也许计时器语法中隐藏了一个减法选项?或者,例如,使用 bash 将日历与天数同步。