不少站点在改版、上 CDN 或换服务器之后,HTTPS 看起来一切正常,直到某天浏览器弹出安全警告,访客进不来,搜索蜘蛛抓取也返回连接错误。这类问题往往不是突然发生的,而是证书到期、资源混用、域名没覆盖这些细节一点点累积的结果。
证书过期:最容易被忽略的低级故障
证书有明确的有效期,通常是一年或三个月。它不会提前提醒你,到期那一刻直接失效。常见的踩坑场景有:
- 证书只装在主域名上,www 或其他子域没装,访问备用入口直接报错。
- 用了 CDN 或负载均衡,源站证书续了,边缘节点的证书忘了续。
- 自动续期脚本因为验证方式变更、API 密钥失效等原因静默失败,长期没人发现。
- 证书链不完整,部分老设备或客户端提示不受信任。
自查方式很直接:用浏览器看锁图标里的有效期,用命令行工具查看服务端返回的证书信息,把主域、www 和关键子域都查一遍。不要只看一个域名就下结论。
混合内容:页面是 HTTPS,资源还在走 HTTP
页面本身通过 HTTPS 打开,但引用的图片、脚本、样式表、字体、接口地址仍然写着 HTTP。浏览器会拦截或降级处理这些资源,常见表现是样式错乱、图片不显示、按钮点了没反应。对蜘蛛来说,抓取到的页面内容也可能是残缺的。
排查时重点看这几类位置:
- 模板和编辑器里硬编码的 HTTP 图片地址、外链资源。
- 第三方统计、客服、广告脚本的引入地址。
- 数据库里存的老内容,正文中带出的绝对地址。
- 接口域名与静态资源域名是否都支持 HTTPS 访问。
处理思路是先把资源域名统一到 HTTPS,再全站替换正文里的 HTTP 引用,最后用浏览器控制台确认没有混合内容告警残留。
证书需要覆盖哪些域名
证书不是装了主域就万事大吉,至少确认这几点:
- 主域名与 www 版本都在证书覆盖范围内,或者其中一个做 301 跳转统一入口。
- 用到的静态资源子域、图片子域、接口子域是否需要各自证书,还是能用通配符证书一次覆盖。
- 证书支持的域名数量是否够用,避免后续加子域又要重新签发。
- 跳转链路里涉及的每个域名,是否都能正常完成 HTTPS 握手。
一个访问地址从 HTTP 跳到 HTTPS、从非 www 跳到 www,中间每一跳都必须能建立安全连接。链条断在哪一环,访客和蜘蛛就停在哪一环。
监控与续期:把人工检查变成自动告警
靠人记日期不现实,建议至少做两件事:
- 设置到期提醒,提前 30 天和 7 天各告警一次,告警发到确实有人看的渠道。
- 监控续期任务是否真的执行成功,而不是只要配置了自动续期就放心。
另外可以在站点健康监控里加一条检测:定时请求首页,检查证书剩余有效期、响应状态码,以及页面是否出现混合内容。一旦异常,先看告警时间点,再对照服务器日志,确认蜘蛛抓取是否同步出现失败。
出问题时的处理顺序
- 先分清是证书问题还是资源问题,看报错是证书不受信任还是资源被拦截。
- 证书过期就尽快续期并重新加载服务配置,注意别把旧证书残留在 CDN 缓存里。
- 混合内容先修模板和公共组件,再批量处理历史正文,避免修完又冒出来。
- 恢复后抽查几个关键页面,确认浏览器无告警、抓取返回正常。
这类问题修起来不复杂,麻烦的是发现得太晚。把证书有效期和混合内容纳入日常巡检,比出事之后临时救火省事得多。