在 Cron 中更新 Certbot Let's Encrypt WILDCARD 证书

在 Cron 中更新 Certbot Let's Encrypt WILDCARD 证书

我一直在寻找一个好的解决方案来更新 Let's Encrypt 的 WILDCARD 证书。

设置通配符证书非常简单:

Apache Debian 9 Stretch:

sudo apt-get install certbot python-certbot-apache -t stretch-backports

sudo certbot certonly --cert-name CERTNAME --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns -d 'DOMAIN.co,*.DOMAIN.co'

DNS 设置完成后,它创建了证书。但现在我不想每 90 天更新一次。我一直在寻找一个好的 Cron Job 解决方案。大多数 Cron Job 解决方案的问题在于它们都是针对非通配符域。

我喜欢这个解决方案,它每天检查证书是否可以更新,如果允许则进行更新:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot renew

通配符证书的问题在于它具有 DNS 设置组件,并且certbot renew不能与手动 certbot 设置一起使用。

我正在寻找这样的 Cron Job:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot certonly --cert-name CERTNAME --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns -d 'DOMAIN.co,*.DOMAIN.co'

但我不认为这适用于 DNS 设置。

如何创建一个 Cron Job 来有效地更新通配符证书属性?

答案1

我通过切换到解决了这个问题acme.sh而不是 certbot。

certbot 当前版本(1.30-5)的文档表明它可以进行自动通配符续订(DNS-01),但 Debian buster stable 尚未包含支持该功能的版本 (0.31.0-5)。我无法突破这个限制。

我发现 acme.sh 比 certbot 更容易实现,也更容易理解。我的 DNS 提供商是 Cloudflare。这两种解决方案的支持都很好。

相关内容