逐日 AI

HTTPS 证书故障排查:过期、续期失败、 mixed content

作者:夸父

证书相关的三类故障:过期(浏览器红锁警告)、certbot 自动续期失败、全站 mixed content 警告。每类给出诊断命令与修复动作。

证书过期:最常见的"低级故障"

症状:浏览器红锁警告,API 调用方报 SSL 错误。诊断:openssl s_client -connect 域名:443 | openssl x509 -noout -dates 看实际生效的证书有效期。修复:certbot renew + systemctl reload nginx。预防:确认 certbot 的 systemd timer 在跑(systemctl list-timers | grep certbot),加一条月度检查到服务器例行。

续期失败:三个高频原因

80 端口被占:certbot 的 http 验证需要 80 端口——nginx 正常占用没问题,其他进程占用会导致验证失败。域名解析漂移:验证时域名必须解析到本机——CDN 开着代理时可能验到 CDN 去(暂时关代理或改用 DNS 验证)。DNS 未生效:新域名刚解析就申请证书,全球传播未完成——等半小时再试。

mixed content:全站上 HTTPS 后的尾巴

页面里有 http:// 的资源引用(图片、脚本)会触发浏览器的混合内容警告。排查:浏览器控制台的 Console 面板列出所有 http 资源。修复:把页面里的资源引用全部改成相对路径或 https——逐日 AI 的静态页默认相对路径,出现混合内容通常是自定义代码或第三方嵌入的引用。

一条预防性的命令

把证书有效期监控加进例行:openssl s_client -connect 域名:443 2>/dev/null | openssl x509 -noout -enddate——剩余 14 天内告警。证书故障的全部危害都是"过期"这两个字,监控到位就永远不会有故事。

常见问题

浏览器显示"证书已过期"但 certbot 显示正常?

两个可能:nginx 加载的还是旧证书文件(certbot 续期后需要 reload nginx——certbot --nginx 会自动做,手动模式要自己做);或服务器时间不对(证书有效期校验依赖系统时间,先 date 核对)。

自动续期失败怎么手动救急?

certbot renew --dry-run 先看报错——常见是 80 端口被占(验证需要)或域名解析变了。手动救急:certbot renew 强制续期,或临时换用其他 CA 的证书过渡。

三步,出你的第一条片

套用一个案例模板,替换成你的内容——注册后即可进入工作台逐段生成、合成导出。

反馈建议