ARTICLE DETAIL

资讯详情

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

Caddy中间证书过期导致HTTPS报错?30秒定位加完整修复清单

Caddy中间证书过期导致HTTPS报错?30秒定位加完整修复清单 Caddy中间证书过期导致HTTPS报错30秒定位加完整修复清单【免费下载链接】caddyFast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS项目地址: https://gitcode.com/GitHub_Trending/ca/caddy浏览器标红、提示您的连接不是私密连接你打开证书详情一看到期日还有一年多——这就是典型的 Caddy 中间证书过期引发的 Caddy HTTPS 报错。服务器证书明明在有效期内信任链上却断了一环Caddy 证书过期排查的关键就在于那枚担保人。本文按定位、修复、防再发三步走配齐命令、Caddyfile 片段和监控规则照着执行即可。没过期的Caddy证书为什么会触发浏览器安全警告先看一张信任链示意。浏览器验证 HTTPS 的顺序是叶子证书你站点的证书→ 中间证书 → 根证书。根证书预装在系统里中间证书负责把前两者连起来。问题出在叶子证书的有效期由你控制中间证书的寿命却由签发它的 CA 决定。Lets Encrypt 这类公共 CA 会定期轮换中间证书旧的一旦到期所有拿它签发的叶子证书就都断供了。Caddy 发证书时会把 CA 返回的完整链一起存下但存储不会自动翻新断供也就发生了。30秒排查清单怎么判断是不是中间证书的问题按顺序过一遍命中任意一条基本就能锁定原因。第 1 步命令行拉完整链。在服务器上执行openssl s_client -connect 你的域名:443 -showcerts /dev/null输出里会按顺序列出服务器发出的每张证书。如果末尾出现unable to get local issuer certificate且肉眼可见某张证书的 Not After 早于今天说明它发的中间证书已经失效。第 2 步看浏览器的证书路径标签。Chrome 点地址栏的锁图标 → 证书 → 证书路径。中间那层显示已过期或路径断裂而首层叶子证书日期正常就是 Caddy 中间证书问题的标准画像。第 3 步查 Caddy 实际加载的证书。访问管理接口默认http://127.0.0.1:2019看config里tls段的connection_policies确认生效的是哪份证书文件、指向哪个路径。如果文件本身链不完整问题就出在存储的链文件上。临时救急手动换中间证书10分钟恢复服务适用场景证书是第三方或自建 CA 签发的文件证书Caddy 管不了它的更新。1. 从 CA 官网下载最新中间证书PEM 格式例如 Lets Encrypt 在 letsencrypt.org/certificates 页面提供当前有效的 R 系列证书。2. 拼完整链。把新的中间证书追加到你现有链文件末尾形成叶子 中间的顺序——服务器必须把这个顺序原样发给客户端。3. 指向新文件并重启。你的站点块里tls指向的正是这个链文件语法见 TLS指令解析your.domain { tls /etc/certs/fullchain.new.pem /etc/certs/privkey.pem root * /var/www/html file_server }caddy reload --config Caddyfile改完不用重启进程reload 即可。再用第 1 步的 openssl 命令复测中间证书的到期日变成新值、Verify return code为 0ok就算修好了。一劳永逸确认Caddy自动续签在正常工作适用场景你用 ACMELets Encrypt 等或内置tls internal签发让 Caddy 自己拿证就不用手动碰链文件。Caddy 的自动 HTTPS 默认开启autohttps.go 负责按站点注入策略证书自动更新逻辑 会在到期前主动续签新证书从 CA 拿回来时自带当时的完整链天然免疫旧中间证书问题。要确认这条路是通的观察日志里是否出现过 obtained certificate 或 renewed 记录再跑一次 openssl 诊断确认链里是新一代中间证书。如果你希望它更早动手续签全局renewal_window_ratio 0.2可以把更新窗口压到有效期的 20%相当于留出 56 天的提前量。长效保障做完这3件事Caddy证书就不用再管1. 调紧更新窗口。在tls块加renewal_window_ratio 0.2让续签提前发生避免卡在到期边缘才发现链已轮换。2. 固定存储路径并定期备份。证书落在默认的文件系统存储里实现见 filestorage.go全局配置指定路径{ storage file_system /var/lib/caddy/certs }定期执行caddy storage export --config Caddyfile --output certs-backup.tar把证书存成 tar 归档到异地。换机器时用caddy storage import还原链文件一个不少。3. 开指标 接告警。全局加一行metricsPrometheus 就能抓到证书到期时间戳。配一条 Alertmanager 规则指标实现见 metrics.gogroups: - name: caddy-certs rules: - alert: CaddyCertExpiringSoon expr: caddy_tls_certificate_expiry_timestamp_seconds - time() 30 * 86400 for: 5m labels: severity: warning规则触发的含义某张证书 30 天内到期却还没被自动续签值得人工看一眼续签链路是否卡住。写在最后排查思路就一条线链文件 → 加载策略 → 更新机制先确认哪一环断了。关键动作是换链文件或确认自动续签正常维护上盯住到期时间戳的告警比等浏览器标红强。保持 Caddy 版本新能少踩很多这类坑。【免费下载链接】caddyFast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS项目地址: https://gitcode.com/GitHub_Trending/ca/caddy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表