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一致。如果不一致:
- 登录GoDaddy域名管理后台
- 找到域名的DNS设置,修改A记录,将值改为你的AWS服务器公网IP
- 等待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
相关产品推荐
相关产品推荐

