如何在 cron 作业中更新 letsencrypt.org 证书?

如何在 cron 作业中更新 letsencrypt.org 证书?

几天以来,我在为我的网络服务器更新 letsencrypt.org 证书时遇到了问题。

letsencrypt 工具的文档可能是好的也可能是坏的——这不可能说,因为有、、、,certbot可以从源目录或不存在的目录中安装或运行,还有各种子命令letsencrypt,它们都声称可以完成工作,但最后都失败了,输出的结果令人费解,无意义的反馈不断转动,变化多端,如下:certbot-autoletsencrypt-auto/etc/certbot

  • Use of --agree-dev-preview is deprecated. Saving debug log to /var/log/letsencrypt/letsencrypt.log在 master 分支的 HEAD 中https://github.com/letsencrypt/letsencrypt - 您是否发送了不起作用的脚本?
  • Failed authorization procedure. [hostname] (http-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://[hostname]/.well-known/acme-challenge/JwhGtVHZ7x6pfBztDgYL-IRQXfa1JLwhAn84Hrzi_xo: Error getting validation data- 无需评论
  • 官方指南https://certbot.eff.org/#ubuntutzesty-apacheUbuntu 17.04 和 Apache2 因以下原因失败

    Use of --agree-dev-preview is deprecated.
    Use of --agree-dev-preview is deprecated.
    Too many flags setting configurators/installers/authenticators 'webroot' -> 'apache'
    

    这让我不知道是否还有意义继续追寻这个

https://community.letsencrypt.org/t/renew-all-certificate-using-cron/21162/6尝试解释这一点,但失败了,因为 SE 格式中没有任何东西。信息已经过时,所说的一切都是矛盾的。

类似的文档man letsencrypt几乎不可用,至少如果你想了解自己在做什么 - 不是强制性的,但在计算机管理中非常有帮助 - 例如它说By default, it will attempt to use a webserver both for obtaining and installing the cert- 不太确定网络服务器应该如何执行所涉及的步骤......

我正在使用 Ubuntu 17.04。

答案1

我自己的服务器运行

# Renew Let's Encrypt cert
0  5    * * *   root     /usr/bin/certbot renew --quiet

(这是 Ubuntu 版的 crontab)。目前看来还不错。我按照以下说明操作:https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-16-04而且很简单。

答案2

秘诀是:需要配置 Apache(例如/etc/apache2/apache2.conf)以允许通过添加以下代码读取目录:

Alias /.well-known/acme-challenge/ /var/www/html/.well-known/acme-challenge/
<Directory "/var/www/html/.well-known/acme-challenge/">
    Options None
    AllowOverride None
    ForceType text/plain
    RedirectMatch 404 "^(?!/\.well-known/acme-challenge/[\w-]{43}$)"
</Directory>

(从https://community.letsencrypt.org/t/apache-multidomain-webroot/10663/2)。

如果我必须手动找出所有这些秘密,我不太清楚为什么这个脚本与自动化相关——这个问题可以自动解决,或者至少可以通过一个有用的错误消息指出。

相关内容