证书过期这件事,通常不是技术难题,而是没人盯着。等蜘蛛来抓的时候看到握手失败,多半会直接停下;就算你当天续好了,也要等下一轮抓取才慢慢恢复。更麻烦的是,这类问题在你自己的浏览器里经常看不出来——旧证书被缓存了,或者你访问的一直是 www 那个版本。
为什么值得单独查一次
证书过期、证书链不全、HTTP 与 HTTPS 混用,对外表现都是「打不开」或「提示不安全」。用户会退回去,蜘蛛也会。而这三件事恰好在同一个位置:服务器配置。它们不会随着内容更新而自然修复,也不会在后台报表里跳出来提醒你。
自查清单
1. 有效期与覆盖范围
- 记下证书到期日,提前 14 到 30 天续期,不要等最后三天。
- 确认主域名、www 版本以及需要使用的子域名是否都在证书覆盖范围内。泛域名证书和多张单域名证书混用时,容易漏掉某个主机名。
- 如果用了自动续期,也要确认续期任务真的跑成功了——失败一次,下一次往往就撞上到期那天。
2. 证书链是否完整
中间证书缺失时,现代浏览器可能自己补齐,看起来一切正常;但部分爬虫和较旧的客户端会直接握手失败。
- 命令行检查:openssl s_client -connect example.com:443 -servername example.com,看输出里的 verify 结果和证书链层级。
- 也可以用在线的 SSL 检测工具对照,重点看有没有「证书链不完整」这类提示。
3. HTTP 到 HTTPS 的跳转
- 每个 HTTP 地址应 301 跳到对应的 HTTPS 地址,而不是统统跳到首页。
- 确认只跳一次。http 跳 https、再跳 www、再跳带斜杠的路径,这种连环跳会白白消耗抓取时间。
- 跳转使用 301 或 308 这类永久状态码,别用 302。
4. 主机名与协议统一
- www 与非 www 只保留一个正式版本,另一个用 301 指向它。
- 检查 sitemap、canonical 标签、站内链接里写的协议和主机名是否一致。混着写会让蜘蛛把同一篇内容当成多个地址。
- 页面内引用站内资源时,建议直接用 https 开头的绝对地址或相对地址,少用协议相对写法。
5. 混合内容
页面加载的图片、脚本、样式如果还是 http 地址,浏览器会给出警告,部分内容可能被拦下。用开发者工具的控制台看一眼有没有 mixed content 提示,通常几分钟就能扫完主要模板。
多久查一次
- 平时每月看一次有效期和跳转配置。
- 证书临近到期时改成每周确认,直到新证书生效。
- 把到期日写进运维日历,或者配置到期前 30 天、14 天、7 天的提醒。
证书更像一份会到期的订阅,而不是装好就一劳永逸的零件。真正有用的不是记住到期日,而是有一个不依赖记性的提醒机制。
顺手一起看的两件事
一是服务器时间是否准确,系统时间偏移会造成证书校验异常,也会让日志时间对不上;二是如果开启了 HSTS,要清楚它的回退成本,别在测试环境随手打开,然后在正式环境手忙脚乱。
整套检查做下来,熟练之后不到二十分钟。它挡掉的是一次可能影响全站的抓取中断,性价比相当高。