25

几个月前我有工作让我们加密证书(使用旧的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>

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

我一直在寻找解决方案,但还没有找到。有人知道为什么 certbot 不创建文件夹吗?

提前致谢!

4

3 回答 3

17

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

server {
    listen 80;
    server_name domain.com www.domain.com git.domain.com;
    root /var/www/domain/;
}

然后我就可以颁发新证书了。

我的长配置文件的问题是(据我所知)我有以下几行:

location ~ /.well-known {
    allow all;
}

但它们应该是:

location ~ /.well-known/acme-challenge/ {
    allow all;
}

现在更新也有效。

于 2016-07-14T22:24:03.640 回答
7

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

 location ~ /\. {
    access_log off;
    log_not_found off;
    deny all;
 }

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

于 2016-09-21T07:53:36.683 回答
1

由于某种奇怪的原因(我认为 certbot 脚本以某种方式发生了变化),我无法以任何方式更新证书。经过近 4 小时的研究,我发现这个线程终于帮助了我:

https://community.letsencrypt.org/t/solved-invalid-response-403-forbidden/64170/13

希望它可以帮助别人。

诀窍是在 apache 配置中添加它:

DocumentRoot /var/lib/letsencrypt/http_challenges
    <Directory /var/lib/letsencrypt/http_challenges>
            Allow from All
    </Directory>

希望它适用于其他人!

于 2020-01-20T20:14:30.707 回答