Certbot 没有创建众所周知的文件夹(它怎么知道在哪里这样做?)

Posted

技术标签:

【中文标题】Certbot 没有创建众所周知的文件夹(它怎么知道在哪里这样做?)【英文标题】:Certbot isn't creating the well-known folder (and how does it know where to do so anyway?) 【发布时间】:2020-05-02 16:58:24 【问题描述】:

在我的服务器上安装了 certbot。除了 WSGI 服务的 Django 应用程序之外,它对所有服务器都很好。

当我用sudo certbot renew 更新证书时,它说挑战没有完成。我的网站根是/srv/site。不知何故,certbot 知道它需要在static/.well-known/acme-challenge 中提出挑战。 (不知道它是怎么知道的,但确实是正确的)。

如果我自己创建这个文件夹,并在其中放置一个文件“hello”,我可以通过转到www.site.com/static/.well-known/acme-challenge/hello 来检索它。那么为什么 letencrypt 不能访问它所带来的挑战呢?

它似乎没有创建这个文件。甚至不是文件夹结构,尽管以 root 身份运行并且能够创建它喜欢的任何文件夹。我正在使用watch -n 0.5 ls -a /srv/site/static 来查看是否创建了 .well-known 文件夹,但它没有。

为什么?

完全错误:

user@host:/srv/site$ sudo certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/domain.tld.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert is due for renewal, auto-renewing...
Plugins selected: Authenticator webroot, Installer None
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for site.domain.tld
Waiting for verification...
Cleaning up challenges
Attempting to renew cert (site.tld) from /etc/letsencrypt/renewal/domain.tld.conf produced an unexpected error: Failed authorization procedure. site.domain.tld (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from https://site.domain.tld/static/.well-known/acme-challenge/yD-WpiQsGL1E_fvs2m-U6UDuHdLCh6shuJkmUdIzhXs [139.162.191.205]: "<!doctype html>\n<html lang=\"en\">\n<head>\n<link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\n<". Skipping.
All renewal attempts failed. The following certs could not be renewed:
  /etc/letsencrypt/live/domain.tld/fullchain.pem (failure)

【问题讨论】:

【参考方案1】:

您提到您将 webroot 设置为/srv/site。因此,certbot 会将挑战放在/srv/site/.well-known/acme-challenge 而不是/static/.well-known/acme-challenge/。此外,certbot 会在 certbot 命令完成后清除挑战,因此您不会在那里找到挑战文件。我认为您需要将 webroot 更改为static

让我知道解决方案是否有效。我真的很想得到关于我的答案的反馈:)

【讨论】:

是的,我也是这么想的,但是错误消息明确指出它从 site/static/.well-known 得到了无效的响应...我知道 certbot 清除了挑战,这就是我使用 watch ls -a 的原因看看是否有任何东西被创建,但什么也没有。也不在 /srv/site 文件夹中。 certbot 是否抛出该错误?或者您在服务器日志中看到它?你能把完整的错误贴在这里吗? 粘贴在原帖中;有趣的是,我刚刚尝试再次为 lulz 运行 certbot renew,它现在只是说我的证书不需要更新。这意味着它在某些时候还是成功了,但我绝对确定它在每次尝试时都会抛出错误。

以上是关于Certbot 没有创建众所周知的文件夹(它怎么知道在哪里这样做?)的主要内容,如果未能解决你的问题,请参考以下文章

Certbot 未创建 acme-challenge 文件夹

Glassfish ssl安装与certbot

Certbot SSL自动生成证书

创建自定义大通知

sh 使用CertBot(nginx)创建证书

如何在没有交互的情况下安装 Certbot (Let's Encrypt)?