我在 Google Cloud、CentOS 7 上有一个 Spring Boot 应用程序。我希望通过 Let's Encrypt 和 Certbot 安装 SSL 证书。当我使用certbot --apache -d mydomain.zone
命令时,我收到一个错误:
我的域名在 Namecheap 上注册。我在 Google Cloud 上的 A 记录:
另外,我在 Namecheap 中提供了 Google 云名称服务器,如本教程中所述:https://www.wpmentor.com/setup-domain-google-cloud-platform/
你能告诉我问题出在哪里吗?我还想知道应用程序中的 Java 代码是否存在问题。例如,有时在访问索引页时,会调用 error_page。当我的控制器中有一个方法时:
@RequestMapping(value = "/error_page", method = RequestMethod.GET)
public String homeError(Model model)
{
return "/error_page";
}
我遇到了不同的 certvbot 错误:
但是当我评论/删除错误页面的控制器方法时,我收到此错误:
这可能是应用程序错误吗?或者是 Apache 的问题?
我尝试关闭 Tomcat。现在收到此错误:
注意:我的 Apache 转发到 8080,我不知道这会产生什么问题?
iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-port 8080
答案1
Let's Encrypt 正在尝试通过启动临时 Web 服务器并让 Let's Encrypt 服务器尝试联系它来验证您对该服务器的所有权。
您需要:
禁用所有当前正在运行的 Web 服务器
确保端口 80 可从互联网访问
您已经通过停止 Apache 完成了步骤 1,现在您需要修复您的iptables
规则。
看起来您正在将流量从端口 80 转发到端口 8080,这很可能是您收到错误的原因Connection refused
,因为临时 Web 服务器的流量被黑洞到端口 8080。禁用/修复该规则,验证应该会成功。