如何停止续订 letsencrypt/certbot 证书?

How to stop renewing a letsencrypt/certbot certificate?

网上有很多关于如何使用 letsencrypt 创建和更新证书的教程,但我想删除并停止更新我创建的证书(创建它只是为了测试目的)。如何停止更新最初使用 letsencrypt 命令获得的一个证书(同时继续更新其他证书)?

我在其他任何地方都没有看到任何人问过这个问题,man letsencrypt 中的命令似乎也没有。

目前我正在使用以下 cron 作业更新证书:

30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log
35 2 * * 1 /bin/systemctl reload nginx

目前好像没有正式"cancel"续约的命令。但是,我从 this thread 中找到了一个似乎有效的建议。

我试过运行下面的命令,

sudo find /etc/letsencrypt/ -name '*outdated.example.com*'

并且在 live/archive/renewal/ 目录中只找到一个文件。

我也试过运行,

sudo grep -r /etc/letsencrypt/ -e 'outdated.example.com'

并且只在 renewal/ 目录(renewal/outdated.example.com.conf)的一个文件中找到对过时域的引用。

I 运行 letsencrypt renew 并在输出中列出 outdated.example.com

然后我创建了一个目录 _renewal_disabled 并将 renewal/outdated.example.com.conf 移动到该目录。

我再次运行 letsencrypt renew,它不再在输出中列出outdated.example.com

据此我可以假设我已经 "disabled" 更新了证书。

已更新

请看答案

更新版本 certbot supports deleting certs via the CLI

旧答案

要从您的 certbot 续订中删除域,您可以删除或移动(更安全)错误的域证书文件和 运行 certbot renew --dry-run 以确保您已删除过时/无效的配置。

rm -rf /etc/letsencrypt/live/${BAD_DOMAIN}/
rm -f /etc/letsencrypt/renewal/${BAD_DOMAIN}.conf
certbot renew --dry-run

如果可行,您可以继续续订而无需 --dry-run 以备将来更新。

certbot renew

如果您 运行 类似于 nginx 或其他服务器,请不要忘记编辑您的配置,使它们不再指向无效或已删除的证书。

最后,重新启动或重新加载服务器配置,大功告成!

使用certbot,您可以简单地使用:

certbot delete --cert-name mywebsite.com

这将从您的 letsencrypt 配置目录中删除证书和所有相关文件。

除了停止续订外,OP 还想删除证书,其他答案已涵盖这一点。但是,如果您想保留证书但停止未来的续订(例如,如果您已切换到不同的服务器,但正在等待所有 DNS 更改传播),您可以进入 /etc/letsencrypt/renewal 并重命名 example.com.confexample.com.conf.disabled (或任何其他非 .conf 名称,甚至完全删除它:

/etc/letsencrypt/renewal/example.com.conf.disabled

您可以通过 运行 以下命令验证它已被禁用,如 中所述。

sudo certbot renew --dry-run

最后有些 suggested elsewhere 可以简单地将 autorenew = False 放在 /etc/letsencrypt/renewal/example.com.conf 文件的顶部,但这似乎不起作用。 (我会回复那个 post 以提供我的反馈,但他们的论坛在 30 天后切断了评论。)

经过审查,我意识到 中包含了很多此类信息,但我想阐明在不删除或禁用证书本身的情况下禁用续订的单独用例所需的步骤。

以下提供交互式菜单:

certbot delete

您也可以使用 certbot delete --cert-name example.com 以非交互方式删除证书,但这似乎是通过正常的授权过程,如果无法授权您的域,则会失败。上面的交互式命令删除所有内容而不尝试授权。