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

Google Compute Engine上Nginx配置Let's Encrypt SSL遇DNS问题求助

解决Nginx + Spring Boot的Let's Encrypt SSL配置问题

先处理核心DNS错误

  1. 修正域名与命令
    你执行Certbot命令时写错了域名后缀(实际是.co.uk却用了.com),正确命令应为:
sudo certbot --nginx -d mydomain.co.uk -d www.mydomain.co.uk

同时确认Cloud DNS配置:

  • 确保mydomain.co.uk和www.mydomain.co.uk都添加了A/AAAA记录,指向新VM的静态IP
  • 用dig mydomain.co.uk或nslookup www.mydomain.co.uk在本地/VM上验证解析结果,DNS记录生效通常需要5-15分钟(取决于TTL设置),刚更新完请先等待再重试。
  1. 旧acme挑战记录处理
    之前测试用的CNAME类型acme挑战记录可留可删,不会影响当前HTTP-01挑战的验证流程,嫌冗余直接删除即可。

防火墙配置必须做

必须开放80和443端口:

  • Let's Encrypt的HTTP-01挑战需要通过80端口完成域名归属验证
  • HTTPS服务本身依赖443端口对外提供访问
    在GCP控制台的VPC网络 > 防火墙中添加两条入站规则:
  • 允许所有来源访问TCP 80端口
  • 允许所有来源访问TCP 443端口

证书申请失败的备选方案:DNS-01挑战

如果HTTP-01挑战因网络/防火墙限制始终失败,可改用DNS-01挑战(无需开放80端口):

  1. 安装Certbot的Google Cloud DNS插件:
sudo apt install python3-certbot-dns-google
  1. 创建Cloud DNS服务账号并下载密钥文件,给VM授予DNS编辑权限
  2. 执行证书申请命令:
sudo certbot certonly --dns-google --dns-google-credentials /path/to/your/key.json -d mydomain.co.uk -d www.mydomain.co.uk

该命令会自动添加TXT记录完成验证,证书生成后手动配置Nginx即可。

经济的开箱即用方案推荐

  1. GCP托管SSL证书 + 负载均衡器
    GCP提供免费的Let's Encrypt托管证书,自动处理签发与续期:
  • 配置Cloud Load Balancer,前端启用HTTPS监听并关联托管SSL证书
  • 后端指向你的GCE VM(80端口)
  • 负载均衡器有免费额度,超出后按流量计费,无需手动维护Certbot,适合长期稳定的应用。
  1. Nginx Proxy Manager
    用Docker部署Nginx Proxy Manager,通过Web界面一键配置反向代理与SSL证书:
docker run -d -p 80:80 -p 443:443 -p 81:81 --name nginx-proxy-manager -v ./data:/data -v ./letsencrypt:/etc/letsencrypt jc21/nginx-proxy-manager:latest

部署后通过81端口访问管理界面,添加反向代理指向Spring Boot应用(VM的8080端口),随后一键申请SSL证书,操作简单,适合非运维背景用户。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:36:26