我在Ubuntu 14.03上安装了letsencrypt,遵循本指南:
我还为证书更新创建了一个cron作业,如指南中所述,但随后发现了以下问题:
certbot-auto renew (作为非根用户)和sudo certbot-auto renew在从命令行进行测试时都可以工作(certbot报告说证书还没有按预期的那样更新)。知道我为什么会有这种不同的行为吗?在shell控制台上手动运行命令和让cron运行命令有什么区别?
更新:我添加了--no-self-upgrade,但没有产生任何不同。在进一步调查时,我注意到以下情况:
sudo certbot-auto renew --dry-run工作很好sudo su; certbot-auto renew --dry-run尝试先升级certbot出于某种原因,certbot似乎认为在以第二种形式运行时没有正确安装它。
发布于 2017-02-01 10:27:17
编辑:
这里的问题是certbot-auto首次使用sudo运行(初始化),而cron作为根用户运行它。certbot中的这个结果--当cron/root执行时,自动安装依赖于嫉妒。
解决方案是将certbot自动作为root运行,而不是使用sudo。
我仍然想提一下-没有自我升级,因为这将阻止certbot-汽车试图升级自己。当由cron作业执行时非常有用,因为您可以/应该通过不时手动运行来监视任何升级。
在使用最新的certbot-auto在Debian上测试时,我看不出有什么不同。您可以在命令中添加“--不自我升级”。这样,certbot-auto就不会检查新版本了。
我在'/etc/cron.d/letsencrypt‘中有这个
# Check if we need to renew any certificates
4 4 * * * /opt/letsencrypt/certbot-auto renew --quiet --no-self-upgrade --post-hook "service nginx restart" >/dev/null 2>&1这将每一天运行一次,然后重新启动nginx,如果它必须更新任何证书,但不试图更新certbot-auto本身。
https://serverfault.com/questions/829835
复制相似问题