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

AWS Ubuntu服务器Flask站点Let's Encrypt证书申请失败求助

解决Let's Encrypt证书创建失败(GoDaddy停放页面响应)的问题

从你的错误信息来看,核心问题是Let's Encrypt验证时访问你的域名返回了GoDaddy的停放页面,这说明两个关键问题:DNS解析未正确指向AWS服务器,同时你的Nginx 80端口配置没有适配http-01挑战的要求。下面是分步解决方法:

1. 确认DNS A记录已正确指向AWS服务器

GoDaddy的停放页面出现,说明当前域名解析的IP还是GoDaddy默认的停放服务器,而非你的AWS Ubuntu主机。

  • 在本地终端或服务器上执行命令:
    dig example.com
    # 或者用nslookup
    nslookup example.com
    
  • 检查返回的IP是否和你的AWS服务器公网IP一致。如果不一致:
    1. 登录GoDaddy域名管理后台
    2. 找到域名的DNS设置,修改A记录,将值改为你的AWS服务器公网IP
    3. 等待DNS生效(通常需要5-30分钟,部分情况可能更久)

2. 修正Nginx 80端口配置

Let's Encrypt的http-01挑战依赖80端口访问.well-known/acme-challenge路径,但你当前的80端口配置是直接将所有请求跳转到HTTPS,导致验证请求无法正常获取挑战文件。修改/etc/nginx/sites-enabled/microblog中的80端口server块:

server {
    listen 80;
    server_name example.com;

    # 优先处理Let's Encrypt验证请求
    location ^~ /.well-known/acme-challenge/ {
        default_type "text/plain";
        root /home/ubuntu2/microblog/;
    }

    location = /.well-known/acme-challenge/ {
        return 404;
    }

    # 其他所有请求跳转到HTTPS
    location / {
        return 301 https://$host$request_uri;
    }
}

3. 验证Nginx配置并重启

修改完配置后,必须验证配置正确性并重启Nginx:

sudo nginx -t
# 如果输出"test is successful",执行重启
sudo systemctl restart nginx

4. 确保文件权限与端口开放

  • 检查/home/ubuntu2/microblog目录的权限,确保Nginx运行用户(通常是www-data)能读取该目录:
    sudo chmod -R 755 /home/ubuntu2/microblog
    
  • 确认AWS安全组已开放80(HTTP)和443(HTTPS)端口的入站流量,否则外部无法访问你的服务器进行验证。

5. 重新运行Certbot命令

完成上述步骤后,再次执行你的Certbot命令:

../certbot-auto certonly --webroot -w /home/ubuntu2/microblog -d example.com --email example@aa.com

如果一切配置正确,这次应该能成功获取证书。之后你可以将Nginx配置中的ssl_certificate和ssl_certificate_key路径替换为Let's Encrypt生成的证书路径(通常在/etc/letsencrypt/live/example.com/下)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:39:10