為什么 HTTPS 問题容易被忽略
站点跑起来之後,HTTPS 往往是最不被想起的一环。證书装好那天能用,之後很少有人再点開地址栏看那把鎖。可證书是有有效期的,通常 90 天到一年不等;自動續期的脚本也可能因為某次服務器迁移、權限變更或目錄調整而静默失敗。等到證书過期,最先感知到的可能不是你,而是訪客看到的安全警告,以及抓取工具在握手阶段就断掉的连接。
比過期更隐蔽的是混合内容:頁面本身走 HTTPS,但里面仍引用着 HTTP 的图片、脚本、样式或 iframe。浏览器會把這類资源当作不安全内容拦截或降級,结果就是图片不顯示、样式错乱,蜘蛛看到的頁面和你想让它看到的並不一样。
一份可执行的證书自查清單
1. 到期時間與續期狀態
- 记錄目前證书的簽發時間和到期時間,把提醒设在到期前 30 天,而不是前 3 天。
- 確認自動續期任務真的在跑,查計划任務或定时器,看最近一次續期日誌,不要只看配置文件還在。
- 續期成功後重新加载 Web 服務,確認新證书已生效,舊證书没有残留在缓存里。
2. 域名覆盖范围
- 核對證书的 SAN 列表,確認裸域、www 域以及實际在用的子域名都在里面。
- 如果用了泛域名證书,注意它一般只覆盖一級子域,多級子域要單獨確認。
- 站点實际訪問的域名和證书里的域名要對得上,避免訪客被提示證书不匹配。
3. 證书鏈是否完整
有些服務器只装了站点證书,漏掉中間證书。桌面浏览器可能自動补齐,但部分客戶端和抓取工具會直接判定證书不可信。可以用在线檢測工具或命令行查看完整的證书鏈,確認没有缺口。
4. 跳轉鏈路是否干净
- HTTP 應一次性 301 到 HTTPS,避免 http 到 https、再到带 www 或不带 www 的多級接力。
- 检查是否仍有頁面用 302 跳 HTTPS,临时跳轉不利于地址统一。
- 確認跳轉後的地址、canonical 标簽和 sitemap 里的寫法一致,都使用 https 前缀。
5. 混合内容排查
- 打開几個代表性頁面,用浏览器開發者工具的控制台和網絡面板,篩選出 http 開头的請求。
- 重点看歷史文章里的外鏈图片、舊編輯器粘贴進来的 iframe、第三方統計或客服脚本。
- 能替換的资源換成 https,替換不了的直接下线或改成文字連結。
- 在頁面模板层面统一使用 https 绝對地址,减少以後再出同類問题。
几個容易踩的细节
HSTS 可以强制浏览器走 HTTPS,但開啟前要确保所有子域名都已支持 HTTPS,否則會把還没配好的子域直接鎖死。建议先用較短的有效期试執行,观察一阵再延長。
證书續期不會自動帮你改内容。如果站内大量内鏈、图片地址還寫着 http,續期再成功也救不了混合内容。
測試环境和正式环境共用證书、共用配置的情况不少。改動前先確認影响范围,別把測試站的問题带到主站。
證书和 HTTPS 属于基础设施,平时不出声,一出問题就是全站級別的。把它放進日常巡检,比出事後再救火省事得多。
把它變成例行检查
- 每月看一眼證书剩余天數,自動續期成功也要人工確認一次。
- 每次改版、換服務器、換 CDN 之後,重新跑一遍跳轉和混合内容检查。
- 把 https 寫進模板和編輯規范,新内容發布时就不會再带回 http 资源。
這些检查花不了多少時間,却能把一類常见的抓取和訪問故障挡在门外。站点运营里很多工作都是這样:不追求立竿见影,只求別在關键时刻掉鏈子。