站点运营

站点运营:HTTPS 与证书自查,别让蜘蛛在握手阶段就掉头

证书过期、中间证书缺失、跳转链冗长、混合内容,这些协议层的问题会让抓取在握手阶段就中断,而且服务器日志里常常连一条记录都看不到。本文梳理六项自查要点和一份可执行的排查流程,帮你在问题扩大之前把 HTTPS 配置理顺。

站点运营

站点运营:HTTPS 与证书自查,别让蜘蛛在握手阶段就掉头

抓取失败有很多种原因,但有一类特别容易被忽略:页面内容本身没问题,问题出在请求还没走到应用层。蜘蛛要先完成 DNS 解析、建立 TCP 连接、完成 TLS 握手,才轮得到服务器返回 HTML。这一步出错,访问日志里往往连一条记录都不会留下,只能靠错误日志或者外部拨测看见超时。

浏览器对证书问题的容忍度比机器高得多。用户看到警告可以点“继续访问”,搜索引擎的抓取程序不会。所以这类问题的排查,不能只看“我自己打得开”。

值得逐项确认的六件事

证书有效期与证书链完整性

证书过期是最直接的一种中断。除了到期时间,还要确认中间证书有没有一起下发:有些服务器只配了站点证书,桌面浏览器靠本地缓存补上了中间证书,看起来一切正常,而抓取程序第一次访问就会握手失败。可以用命令行工具或在线检测服务看一下完整链路。

HTTP 到 HTTPS 的跳转链路

常见的写法是 http 跳到 https,但中途经过多个域名或路径,形成两三次跳转。跳转本身不是错误,但每多一跳就多一次请求开销,也更容易在某一环配置不一致时断掉。建议把 http、https、带 www、不带 www 这几种组合一次性梳理清楚,让每个入口一跳到位。

混合内容

HTTPS 页面里嵌了 http 的图片、脚本或 iframe,浏览器会拦截或降级提示。对抓取来说,被拦截的资源不会加载,依赖这些资源渲染出来的内容就可能拿不到。用开发者工具的网络面板或站点扫描工具过一遍,把 http 资源换成 https 或相对协议地址。

HSTS 与预加载

开启 HSTS 之后浏览器会强制走 HTTPS,这对安全是好事,但要注意预加载列表的提交基本是不可逆的。如果同一域名下还有必须走 http 的旧路径,或者子域名证书没配齐,开启 HSTS 会把小问题放大成整站不可访问。

多域名证书与 SNI

一个 IP 上放多个站点、证书按域名区分时,服务器需要靠 SNI 返回正确的证书。不支持 SNI 的客户端或老旧的抓取器可能拿到默认证书,从而校验失败。多站点共用一个 IP 时,值得专门测一下每个域名返回的证书是不是自己的那一张。

TLS 版本与加密套件

为了通过安全扫描而只保留最新协议,可能会挡掉一部分只支持旧版本的客户端;反过来,为了兼容而开启过老的协议版本,又会被判为不安全。比较稳妥的做法是保留 TLS 1.2 和 1.3,关掉更早的版本,然后在服务器日志里观察异常中断量有没有上升。

一份可执行的自查流程

  1. 用命令行或检测工具访问首页、栏目页、详情页各一个 URL,确认证书链完整、无警告。
  2. 分别用 http、https、带 www、不带 www 四种组合请求,记录跳转次数和最终状态码。
  3. 抽查页面的图片、脚本、样式,确认没有残留的 http 引用。
  4. 查看服务器错误日志,统计握手失败、连接重置的数量。
  5. 配置一个外部拨测任务,定时请求几个关键 URL 并记录证书剩余天数。
  6. 证书到期前留出足够续期时间,续期后立即复测,不要等到告警响起才动手。

几个常见的误区

  • “用户能打开就没问题”:用户用的是最新浏览器,而且可能已经手动接受了警告。
  • “证书还有一个月,不急”:自动续期失败往往不会主动通知,预留时间要比想象中更长。
  • “跳转多一次无所谓”:跳转链越长,可能出问题的环节越多,排查成本也越高。
  • “开了 HSTS 就一劳永逸”:开之前要先确认所有子域名的证书都已经到位。
把协议层的事情理顺,是内容能被看到的前提。它不会直接带来访问量,但配置错了,后面所有优化都无处施展。