Certbot 无法验证某些域名(验证器:nginx)

Certbot 无法验证某些域名(验证器:nginx)

我正在运行 nginx 作为反向代理,由于某种原因,我无法更新 letencrypt 证书,我尝试将 nginx 和 certbot 升级到最新版本。它之前一直有效,我不确定是否更改了某些服务器配置。

运行 certbot renew 时,我从 certbot 收到以下错误:

certbot renew --nginx --dry-run

Certbot 无法验证某些域(验证器:nginx)。证书颁发机构报告了这些问题:域:myurl 类型:未经授权 详细信息::来自 http://myurl/.well-known/acme-challenge/asdasd 的响应无效:404

提示:证书颁发机构无法验证 Certbot 所做的临时 nginx 配置更改。请确保列出的域指向此 nginx 服务器,并且可以从互联网访问它。

Nginx 错误日志示例:

2023/08/03 08:22:36 [error] 13286#13286: *32 open() "/usr/share/nginx/html/.well-known/acme-challenge/asdasd" failed (2: No such file or directory), client: ipadress, server: ipadress, request: "GET /.well-known/acme-challenge/asdasd HTTP/1.1", host: "url"

据我了解,nginx 无法提供 acme-challange 或者 certbot 正在将挑战写入 /usr/share/nginx/html 以外的其他位置...

有人能给我指明正确的方向吗?

提前致谢

更新 @symcbean 命令的输出显示“没有此文件或目录” ls -l /usr/share/nginx/html/.well-known/acme-challenge/ ls:无法访问'/usr/share/nginx/html/.well-known/acme-challenge/':没有此文件或目录

我怎么知道 cerbot 正在尝试写入 /usr/share/... 而不是其他文件夹?

nginx 站点配置的示例。

upstream beta-api {
    server 10.166.0.4:8384;
}

server {
    server_name betaapi.ancytree.com;
    listen 80;
    # set client body size to 8M #
    client_max_body_size 8M;
        
    location / {
        proxy_pass http://beta-api;
        include proxy_params;
    }

}

答案1

您已经查看了日志 - 这是个好的开始!由于 LetsEncrypt 似乎正在访问您的网站,因此您可以排除许多与 DNS 和 HTTP 相关的问题。

您接下来应该尝试的是亲自完成 HTTP-01 挑战并看看会发生什么。

Certbot 续订将作为 cron 作业运行 - 因此需要使用相同的帐户运行:

echo "test" >/usr/share/nginx/html/.well-known/acme-challenge/asdasd
ls -l /usr/share/nginx/html/.well-known/acme-challenge/asdasd
cat /usr/share/nginx/html/.well-known/acme-challenge/asdasd
curl -I http://myurl/.well-known/acme-challenge/asdasd

如果这不能为您提供答案,请使用这些命令的输出更新您的帖子。

(可能的原因是文件权限,包括 MAC、缺少目录或 Web 服务器中文件系统和 URL 路径之间缺少映射)

相关内容