首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在以cron作业的形式运行让我们加密certbot时的不同行为

在以cron作业的形式运行让我们加密certbot时的不同行为
EN

Server Fault用户
提问于 2017-02-01 08:56:38
回答 1查看 1.3K关注 0票数 1

我在Ubuntu 14.03上安装了letsencrypt,遵循本指南:

https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-14-04

我还为证书更新创建了一个cron作业,如指南中所述,但随后发现了以下问题:

  • certbot-auto renew (作为非根用户)和sudo certbot-auto renew在从命令行进行测试时都可以工作(certbot报告说证书还没有按预期的那样更新)。
  • 但是,当同一个命令由cron (作为root用户)运行时,certbot尝试升级自己。

知道我为什么会有这种不同的行为吗?在shell控制台上手动运行命令和让cron运行命令有什么区别?

更新:我添加了--no-self-upgrade,但没有产生任何不同。在进一步调查时,我注意到以下情况:

  • sudo certbot-auto renew --dry-run工作很好
  • sudo su; certbot-auto renew --dry-run尝试先升级certbot

出于某种原因,certbot似乎认为在以第二种形式运行时没有正确安装它。

EN

回答 1

Server Fault用户

发布于 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‘中有这个

代码语言:javascript
复制
# 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本身。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/829835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档