几天以来,我在为我的网络服务器更新 letsencrypt.org 证书时遇到了问题。
letsencrypt 工具的文档可能是好的也可能是坏的——这不可能说,因为有、、、,certbot
可以从源目录或不存在的目录中安装或运行,还有各种子命令letsencrypt
,它们都声称可以完成工作,但最后都失败了,输出的结果令人费解,无意义的反馈不断转动,变化多端,如下:certbot-auto
letsencrypt-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)。
如果我必须手动找出所有这些秘密,我不太清楚为什么这个脚本与自动化相关——这个问题可以自动解决,或者至少可以通过一个有用的错误消息指出。