CentOS7下Caddy无法启用自动HTTPS问题排查求助
Caddy证书申请失败(ACME挑战超时)问题排查与解决
问题原因分析
从错误日志可见,Let's Encrypt和ZeroSSL的ACME验证均出现连接超时。尽管你确认80/443端口已开放,但当前Caddy配置存在核心问题:
你直接指定了www.example.top:443作为监听地址,导致Caddy仅监听443端口。而HTTP-01验证要求必须通过80端口访问/.well-known/acme-challenge/路径完成域名所有权验证,你的配置未监听80端口,验证请求无法被Caddy处理,最终触发超时失败。
同时,TLS-ALPN-01挑战虽依赖443端口,但在未获取证书前,Caddy的初始443监听无法正确响应ACME的特殊TLS握手,也会导致验证失败。
解决方案
修改Caddyfile,利用Caddy的自动HTTPS特性(推荐),让Caddy自动处理证书申请、验证及端口管理:
{ email xxx123@gmail.com } www.example.top { reverse_proxy localhost:9876 }
该配置会自动完成以下操作:
- 监听80端口,处理ACME HTTP-01验证请求,同时将所有HTTP流量重定向至HTTPS
- 监听443端口,使用自动申请的证书提供HTTPS服务
- 自动续期证书,无需手动干预
若需手动配置端口(仅适用于特殊场景),可显式配置80端口处理验证:
{ email xxx123@gmail.com } www.example.top:80 { # 处理ACME验证请求 respond /.well-known/acme-challenge/* 200 { close } # 重定向所有HTTP请求到HTTPS redir https://{host}{uri} permanent } www.example.top:443 { reverse_proxy localhost:9876 }
验证步骤
- 重启Caddy服务:
sudo systemctl restart caddy - 实时查看日志确认证书申请状态:
sudo journalctl -u caddy -f - 测试80端口可用性:使用外部机器执行
curl http://www.example.top/.well-known/acme-challenge/test,返回200则说明配置生效
内容的提问来源于stack exchange,提问作者shsf
相关产品推荐
相关产品推荐

