ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Caddy 中间证书过期排查:3 个检查点定位,两条路径一次搞定

Caddy 中间证书过期排查:3 个检查点定位,两条路径一次搞定 Caddy 中间证书过期排查3 个检查点定位两条路径一次搞定【免费下载链接】caddyFast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS项目地址: https://gitcode.com/GitHub_Trending/ca/caddy凌晨 2 点值班群弹出第一条用户反馈网页打不开浏览器弹您的连接不是私密连接。你第一件事打开控制台敲openssl x509查域名证书有效期还剩下两个月——证书明明没过期为什么 HTTPS 全挂了这种叶证好好的、连接却报证书错误的故障大概率是Caddy 中间证书过期服务端送出的完整证书链里垫在中间的那一环失效了。先别急着改配置。用下面的分诊流程几分钟就能确认到底是不是中间证书在作妖。3 个检查点快速确认是不是 Caddy 中间证书过期检查点 1服务端叶证本身是否有效。在服务器上直连自己的站点确认第一张证书的有效期openssl s_client -connect example.com:443 -servername example.com \ -showcerts 2/dev/null | openssl x509 -noout -issuer -subject -dates如果叶证subject 是域名的那张没过期别停在这里继续第二点。检查点 2看服务端实际送出了几张证书、中间那张是谁。-showcerts的输出里Certificate chain:段应至少有两张索引 0 是叶证索引 1 是中间证书。把索引 1 单独拿出来看日期或直接验证整条链openssl verify -CAfile 中间证书.pem 叶证书.pem返回untrusted、certificate has expired或干脆提示拿不到签发者基本可以锁定中间证书过期或链路缺环。检查点 3排除本地干扰。用一台不同运营商网络或手机热点的机器复测。都报同样的错说明问题在服务器送出的链路上而不是某台客户端的根证书库太旧。三步走完结论无非两种叶证本身到期那就是常规续期问题或者中间证书失效本文主角。Caddy 证书链 排查的关键就在第 2 步——多数人会漏掉服务端到底送了几张证书这个细节。为什么好好的证书链会突然断担保链与 CA 轮换打个比方。你去找一个陌生供应商签单他递来一份介绍信供应商本人服务器证书由区域公司中间证书担保区域公司再由集团总部根证书担保。浏览器不直接认供应商它沿着这条担保链一路验到内置的总部名单。这条链上任何一环失效整个信任就断了。而CA 会定期轮换中间证书——Lets Encrypt 的中间证书E5、E6、R10、R11……每隔几年换代一次旧的到点即废。如果你的服务器用的是手工配置的固定证书链文件叶证每 90 天自动续期续得再勤链文件里那张老中间证书照样会到期。这就是证书没过期、HTTPS 却挂了的根源。Caddy 证书链 排查时这个认知能帮你直接排除叶证没问题就是没事的错觉链上最短的那块板决定水位。两条修复路径先止血再断根临时方案手动补齐证书链止血从 CA 官网下载当前有效的中间证书把它拼到叶证后面组成完整链文件再让 Caddy 的tls指令指向它example.com { tls /etc/certs/example-chain.pem /etc/certs/example.key }改完用caddy reload --config Caddyfile热加载再跑一遍检查点 2 确认链完整。注意这只是止血叶证到期会再触发同样的问题而你的链文件下次换中间证书时还得手动改一遍。长期方案让 Caddy 自动维护证书链断根只要不写auto_https offCaddy 默认会对域名启用自动 HTTPS证书签发、续期、连同中间证书在内的整条链都由它对接 ACME 协议自动拉取和维护。CA 轮换中间证书时下次续期拿到的自然就是新链。你只需要确认两点{ storage file_system /var/lib/caddy # 固定存储避免证书随容器重建丢失 renewal_window_ratio 0.5 # 提前约一半有效期就续 }相关逻辑集中在 modules/caddytls/配置解析在 caddyconfig/httpcaddyfile/tlsapp.go。把renewal_window_ratio调小一点如0.5相当于把续期动作往前挪给续期失败再来一次留出缓冲窗口。把故障挡在门外日志 metrics 双保险 治完一次就该防下一次。展开两个手段就够日志Caddy 的 TLS 事件签发、续期、失败都会进日志。全局设log { level info }然后对关键词续期失败renewal 相关报错做日志采集告警。链问题往往在续期那一刻就埋下伏笔而不是故障当天。metrics全局开启metrics后Prometheus 端点里带有 TLS 证书到期时间戳。配一条规则到期时间 - now() 30 天就告警中间证书这类隐藏环过期前 30 天就能被抓到。两个手段选一个落地即可有 Prometheus 的就走 metrics没有的就把日志接进告警管道。预警的本质是让告警比用户反馈先 30 天到达。✅ 证书链健康自查清单最近一次用openssl s_client -showcerts核过服务端实际送出的证书张数≥2链中每张证书的notAfter都确认过而不只是叶证Caddy 的证书存储路径固定且已备份storage配置重建机器不会丢链手动维护的证书域知道对应 CA 的中间证书轮换公告在哪看自动 HTTPS 域未误开auto_https off/disable_certs续期日志里有失败记录吗翻最近一次续期的日志段metrics 或日志告警已覆盖证书 30 天内到期这一事件勾完这 7 项下次凌晨 2 点的证书告警大概率轮不到你。【免费下载链接】caddyFast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS项目地址: https://gitcode.com/GitHub_Trending/ca/caddy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表