站点运营

站点运营:HTTPS 與證书自查,別让過期證书把蜘蛛挡在门外

證书過期、證书鏈不全、HTTP 與 HTTPS 混用,都會让蜘蛛和用戶同时吃閉门羹,而浏览器缓存常常让你看不出問题。這份清單覆盖有效期、證书鏈、跳轉、主机名统一與混合内容,附上检查频率和到期提醒做法,帮助把全站級故障挡在發生之前。

站点运营

站点运营:HTTPS 與證书自查,別让過期證书把蜘蛛挡在门外

證书過期這件事,通常不是技術难题,而是没人盯着。等蜘蛛来抓的时候看到握手失敗,多半會直接停下;就算你当天續好了,也要等下一轮抓取才慢慢恢复。更麻烦的是,這類問题在你自己的浏览器里经常看不出来——舊證书被缓存了,或者你訪問的一直是 www 那個版本。

為什么值得單獨查一次

證书過期、證书鏈不全、HTTP 與 HTTPS 混用,對外表現都是「打不開」或「提示不安全」。用戶會退回去,蜘蛛也會。而這三件事恰好在同一個位置:服務器配置。它們不會随着内容更新而自然修复,也不會在後台报表里跳出来提醒你。

自查清單

1. 有效期與覆盖范围

  • 记下證书到期日,提前 14 到 30 天續期,不要等最後三天。
  • 確認主域名、www 版本以及需要使用的子域名是否都在證书覆盖范围内。泛域名證书和多張單域名證书混用时,容易漏掉某個主机名。
  • 如果用了自動續期,也要確認續期任務真的跑成功了——失敗一次,下一次往往就撞上到期那天。

2. 證书鏈是否完整

中間證书缺失时,現代浏览器可能自己补齐,看起来一切正常;但部分爬虫和較舊的客戶端會直接握手失敗。

  • 命令行检查:openssl s_client -connect example.com:443 -servername example.com,看輸出里的 verify 结果和證书鏈层級。
  • 也可以用在线的 SSL 檢測工具對照,重点看有没有「證书鏈不完整」這類提示。

3. HTTP 到 HTTPS 的跳轉

  1. 每個 HTTP 地址應 301 跳到對應的 HTTPS 地址,而不是统统跳到首頁。
  2. 確認只跳一次。http 跳 https、再跳 www、再跳带斜杠的路径,這種连环跳會白白消耗抓取時間。
  3. 跳轉使用 301 或 308 這類永久狀態碼,別用 302。

4. 主机名與协议统一

  • www 與非 www 只保留一個正式版本,另一個用 301 指向它。
  • 检查 sitemap、canonical 标簽、站内連結里寫的协议和主机名是否一致。混着寫會让蜘蛛把同一篇内容当成多個地址。
  • 頁面内引用站内资源时,建议直接用 https 開头的绝對地址或相對地址,少用协议相對寫法。

5. 混合内容

頁面加载的图片、脚本、样式如果還是 http 地址,浏览器會给出警告,部分内容可能被拦下。用開發者工具的控制台看一眼有没有 mixed content 提示,通常几分钟就能掃完主要模板。

多久查一次

  • 平时每月看一次有效期和跳轉配置。
  • 證书临近到期时改成每周確認,直到新證书生效。
  • 把到期日寫進运维日歷,或者配置到期前 30 天、14 天、7 天的提醒。
證书更像一份會到期的订阅,而不是装好就一劳永逸的零件。真正有用的不是记住到期日,而是有一個不依赖记性的提醒机制。

顺手一起看的两件事

一是服務器時間是否准确,系統時間偏移會造成證书校驗異常,也會让日誌時間對不上;二是如果開啟了 HSTS,要清楚它的回退成本,別在測試环境随手打開,然後在正式环境手忙脚乱。

整套检查做下来,熟练之後不到二十分钟。它挡掉的是一次可能影响全站的抓取中断,性價比相当高。