站点运营

站点运营:证书与 HTTPS 自查,别让过期提示把访客和爬虫一起挡在门外

证书过期、证书链不完整、页面里混进 HTTP 资源,这类问题平时无感,出事就是全站级别。本文从有效期、证书链、域名匹配、混合内容四个方面给出可执行的自查顺序,并说明自动续期、CDN 与 HSTS 需要注意的细节。

站点运营

站点运营:证书与 HTTPS 自查,别让过期提示把访客和爬虫一起挡在门外

证书这件事的特点是:平时完全无感,出问题时却是全站级别的。访客看到的是浏览器整页拦截警告,抓取端则可能是 TLS 握手失败、连接被重置,或者只拿到一小段内容就断开。它不像某个栏目页出错那样只影响一小块,而是所有入口同时失效。

为什么证书问题容易被拖很久

很多站点只在桌面浏览器上看一眼,看到地址栏的锁是正常状态就不管了。但证书链不完整这类问题,恰恰只在部分客户端暴露:桌面浏览器能自动补链,某些移动端浏览器、老版本 HTTP 客户端、部分抓取组件却会因为缺少中间证书直接失败。另一类常见情况是自动续期悄悄失败,到期时间过去很久,直到有人反馈打不开才发现。

三个必查项

有效期与自动续期

先看证书的签发时间和到期时间,再确认自动续期任务是否真的在跑。续期脚本通常依赖域名验证,如果 DNS 解析被调整过、验证文件被清理、或者验证路径被服务器规则拦掉,续期就会静默失败。建议把“到期前 30 天”设为人工复核点,而不是等到期当天才处理。

证书链是否完整

可以用命令行工具连一下自己的域名,观察返回的证书链。正常情况下应该能看到服务器证书和中间证书。如果只返回一张服务器证书,说明中间证书没有配上,部分客户端会直接握手失败,而这个问题在桌面浏览器上往往看不出来。

域名是否匹配

证书上写的域名要和实际访问的域名一致。带 www 和不带 www 如果都提供服务,要么证书里同时包含这两个名称,要么把其中一个统一跳转到另一个,别让两条入口一条正常、一条报警告。

混合内容:页面是 HTTPS,里面还在拉 HTTP

这类问题不会让整站打不开,但会以另一种方式影响体验:样式表加载失败、脚本被阻止、图片位置空白、接口请求被拦。浏览器控制台通常会有明确警告,开发者工具的 Network 面板按协议过滤也能很快定位来源。常见来源包括:

  • 历史文章里的图片仍写着 http 开头的绝对地址;
  • 模板中引用的第三方字体、统计脚本、客服组件还是 HTTP;
  • 从编辑器粘贴进来的视频或地图 iframe 地址没有升级;
  • 接口请求写死在旧域名上。

处理思路并不复杂:统一改成相对协议或直接写 https,能本地托管的第三方资源尽量本地托管,减少外部依赖带来的不确定性。

上线前与定期自查清单

  1. 用命令行或在线检测工具跑一次证书链检查,确认返回链完整;
  2. 分别访问 http、https、www、裸域四种组合,确认最终都落到同一个地址;
  3. 打开控制台看是否有混合内容警告,在 Network 面板过滤 http 复查;
  4. 确认自动续期有成功记录,而不是只有任务存在;
  5. 检查 CDN 或反向代理上配置的证书是否也同步更新;
  6. 确认 HSTS 没有在证书流程还不稳定的阶段提前开启。

HSTS 的一点提醒

HSTS 能省掉一次跳转,也能避免降级访问,但它有个前提:证书和续期流程必须足够稳定。一旦开启并被浏览器记住,证书出问题时访客连“继续访问”的选项都没有。建议先把续期监控和提醒做扎实,再考虑开启,并且首次设置较短的 max-age,观察一段时间再延长。

证书不是装完就一劳永逸的配置,它更像一个需要定期确认的开关。把它放进日常巡检清单,比出事之后临时排查要省力得多。

结语

证书有效性、HTTPS 跳转和页面内资源协议这三件事,检查成本很低,出问题的影响面却很广。把它们和抓取日志、响应时间一样,作为站点运营的固定检查项,能避免很多“莫名其妙打不开、抓不到”的情况。