Certbot没有创建acme-challenge文件夹

leh*_*ian 20 https nginx lets-encrypt certbot

几个月前我曾经工作过Let's加密证书(使用旧的letsencrypt客户端).我使用的服务器是nginx.

Certbot正在创建.well-known文件夹,但不是acme-challenge文件夹

现在我尝试通过创建新证书 ~/certbot-auto certonly --webroot -w /var/www/webroot -d domain.com -d www.domain.com -d git.domain.com

但我总是得到这样的错误:

IMPORTANT NOTES:
   - The following errors were reported by the server:

   Domain: git.domain.com
   Type:   unauthorized
   Detail: Invalid response from
   http://git.domain.com/.well-known/acme-challenge/ZLsZwCsBU5LQn6mnzDBaD6MHHlhV3FP7ozenxaw4fow:
   "<.!DOCTYPE html>
   <.html lang='en'>
   <.head prefix='og: http://ogp.me/ns#'>
   <.meta charset='utf-8'>
   <.meta content='IE=edge' http-equiv"

   Domain: www.domain.com
   Type:   unauthorized
   Detail: Invalid response from
   http://www.domain.com/.well-known/acme-challenge/7vHwDXstyiY0wgECcR5zuS2jE57m8I3utszEkwj_mWw:
   "<.html>
   <.head><.title>404 Not Found</title></head>
   <.body bgcolor="white">
   <.center><.h1>404 Not Found</h1></center>
Run Code Online (Sandbox Code Playgroud)

(当然HTML标签内的点不是真的存在)

我找了一个解决方案,但还没找到.有谁知道为什么certbot没有创建文件夹?

提前致谢!

leh*_*ian 12

问题是nginx配置.我用最简单的配置替换了我的长配置文件:

server {
    listen 80;
    server_name domain.com www.domain.com git.domain.com;
    root /var/www/domain/;
}
Run Code Online (Sandbox Code Playgroud)

然后我就能发行新证书了.

我的长配置文件的问题是(据我所知)我有这些行:

location ~ /.well-known {
    allow all;
}
Run Code Online (Sandbox Code Playgroud)

但它们应该是:

location ~ /.well-known/acme-challenge/ {
    allow all;
}
Run Code Online (Sandbox Code Playgroud)

现在续约也有效.

  • 值得一提的是,Certbot会在尝试发布之后清除`.well-known`目录.因此,如果你正在研究它认为问题是文件生成而不是文件服务,请放心它不是.存在权限错误时获得的错误是不同的. (16认同)

Daz*_*zag 7

我有一个类似的问题。我的问题是,我有这个规则:

 location ~ /\. {
    access_log off;
    log_not_found off;
    deny all;
 }
Run Code Online (Sandbox Code Playgroud)

这些行取消对以“.”开头的任何目录的每次访问。(观点)

  • 我也有这个问题(Nginx 上 Wordpress 的默认设置)但这是一个有价值的规则,所以只需将它放在 `location ~ /.well-known` 规则之后 (3认同)