Cron

將letsencrypt的certbot作為cron作業執行時的不同行為

  • February 2, 2017

我按照本指南在 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(作為非 root 使用者)並且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 在以第二種形式執行時似乎認為它沒有正確安裝。

出現此問題的原因certbot是安裝方式。

當不certbot使用$HOME. 執行時sudo,這仍然是你自己的$HOME。但是,當以 root 身份執行時,這會轉到/root不存在虛擬環境的位置,因此certbot如果不創建它就無法執行。考慮到執行它的新環境,它與其說是自我升級不如說是自我安裝。

引用自:https://serverfault.com/questions/829835