You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Let's Encrypt证书生成过程中的报错问题

排查Certbot证书生成失败的问题

我来帮你一步步拆解可能的问题点,以及对应的解决办法:

1. 检查Nginx配置的域名覆盖范围

你的master.conf里当前server_name只设置了www.master.example.org,但你申请证书的是两个域名:master.example.org和www.master.example.org。如果没有对应的规则处理主域名的80请求,Let's Encrypt的验证请求会被默认server拦截,直接导致验证失败。

解决办法:修改server_name同时包含两个域名:

server {
 listen 192.0.2.4;
 listen 192.0.2.4:443 ssl;
 # 同时匹配主域名和www子域名
 server_name master.example.org www.master.example.org;
 expires -100;
 #ssl_certificate_key /etc/letsencrypt/live/master.example.org/privkey.pem;
 #ssl_certificate /etc/letsencrypt/live/master.example.org/fullchain.pem;
 error_page 403 @forbidden;
 error_page 404 @notfound;
 error_page 405 @notallowed;
 error_page 500 @internalerror;
 # letsencrypt
 location ~ ^/\.well-known/acme-challenge {
 auth_basic off;
 root /home/www/acme;
 }
}

2. 验证Nginx配置语法并生效

修改配置后,一定要先检查语法是否正确,再重新加载Nginx让配置生效:

# 检查配置语法是否合法
nginx -t
# 重新加载配置(systemd系统适用)
systemctl reload nginx

如果nginx -t报错,先修复语法错误再继续下一步。

3. 检查Webroot目录的权限

Certbot会把验证文件写入/home/www/acme/.well-known/acme-challenge/,Nginx的运行用户必须有读取这个目录及文件的权限,否则会返回403或404。

操作步骤:

  1. 先查看Nginx的运行用户:
ps aux | grep nginx | head -1

通常是nginx或www-data。
2. 设置目录权限:

# 替换成你的Nginx运行用户
chown -R nginx:nginx /home/www/acme/
# 确保目录和文件可被读取
chmod -R 755 /home/www/acme/

4. 手动测试验证路径是否可访问

在/home/www/acme/.well-known/acme-challenge/下创建一个测试文件,验证路径是否能正常访问:

mkdir -p /home/www/acme/.well-known/acme-challenge/
echo "test-content" > /home/www/acme/.well-known/acme-challenge/test.txt

然后分别访问:

  • http://master.example.org/.well-known/acme-challenge/test.txt
  • http://www.master.example.org/.well-known/acme-challenge/test.txt

如果能看到test-content,说明路径配置没问题;如果返回404,检查是否有其他Nginx规则(比如location ^~这类前缀匹配)优先拦截了这个路径。

5. 确保80端口对外开放

Let's Encrypt的验证服务器需要通过80端口访问你的验证路径,所以要确认:

  • 服务器本地防火墙(如ufw、firewalld)允许80端口入站流量
  • 云服务商的安全组(如果是云服务器)已经开放80端口

6. 尝试使用Certbot的Nginx插件(更省心的方式)

如果webroot方式一直踩坑,可以试试Certbot的Nginx插件,它会自动配置Nginx的验证规则,避免手动配置出错:

certbot run --nginx --agree-tos --email testcert@example.org -d master.example.org -d www.master.example.org

这个命令会自动修改Nginx配置、完成验证并安装证书。


内容的提问来源于stack exchange,提问作者Piduna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:17:04