站点运营

站点运营:HTTPS 證书與混合内容自查,別等浏览器报警才發現

HTTPS 在多數站点已是标配,但證书到期、證书鏈不完整、頁面里混着 HTTP 资源,這些問题平时不顯眼,一旦触發就會让訪客看到警告、让抓取中断。這篇文章按自查顺序,把證书有效期、證书鏈、SAN 覆盖、混合内容、HSTS 與續期机制逐項過一遍,方便在站点运营中定期核對。

站点运营

站点运营:HTTPS 證书與混合内容自查,別等浏览器报警才發現

HTTPS 在多數站点已经是标配,配置完成之後,很少有人會再回头检查。可證书有有效期,頁面里的资源也可能在改版时被換回 HTTP。這两類問题平时看不出来,一旦触發,訪客會先看到浏览器的警告頁,抓取也可能在中途断掉。把證书和混合内容纳入日常自查,比事後救火省事得多。

證书有效期:別等最後一天

免費證书的有效期通常為 90 天,商业證书多為一年。有效期本身不是問题,問题在于續期動作是否真的执行了。如果用了自動續期,要確認任務有没有按时跑、跑完有没有更新到實际生效的證书文件,而不是只在面板上顯示成功。

建议在到期前 30 天就完成續期,並留出驗證時間。續期後立即用浏览器訪問一次,確認證书簽發時間已经變化,避免“續了但没生效”這種最常见的情况。

覆盖范围:域名一個都別漏

證书的 SAN 字段决定它能覆盖哪些域名。常见的疏漏有:

  • 只给主域名配了證书,www 子域没有覆盖,訪問时提示不安全;
  • 移動站、静態资源域名、舊域名單獨解析,却共用一張覆盖不全的證书;
  • 通配符證书只覆盖一級子域名,二級子域名需要單獨處理。

把站点實际在用的域名列出来逐個訪問確認,比只看證书面板更可靠。

證书鏈:中間證书別只装一半

有些服務器只部署了域名證书,没有附带中間證书。桌面浏览器可能自己补全,但部分客戶端和抓取工具會直接判定為不受信任。自查方式是检查服務器返回的證书鏈是否完整,或者用命令行工具查看握手過程中返回了几張證书。多數情况下,把中間證书和域名證书按顺序合並到同一個文件即可。

混合内容:HTTPS 頁面里的 HTTP 资源

頁面本身是 HTTPS,但里面引用了 HTTP 的图片、脚本、样式、字体或 iframe,浏览器會拦截或给出不安全提示。這類問题往往来自三個地方:歷史文章里粘贴的外鏈图片、第三方統計或广告代碼、改版时遗留的舊资源路径。

處理方式分两步:先掃描,再替換。掃描可以借助浏览器控制台的提示逐頁看,也可以用抓取工具跑一遍全站;替換时優先把站内资源改成本站 HTTPS 地址,外部资源無法控制的,就考虑換成支持 HTTPS 的来源或直接去掉。

HSTS 與跳轉:配之前想清楚

HSTS 能让浏览器记住只走 HTTPS,减少一次跳轉。但它有個特点:一旦下發,在有效期内浏览器不會再去尝试 HTTP,回退比較麻烦。如果站点仍有部分子域没上 HTTPS,開啟时不要带上 includeSubDomains。

同时检查 HTTP 到 HTTPS、裸域到 www 的跳轉。理想情况是一次跳轉到位,而不是连跳两三次。跳轉层級過多,既拖慢首屏,也让抓取多走弯路。

一份可以照着做的自查清單

  1. 確認證书到期時間,續期任務是否真實生效;
  2. 列出所有在用域名,逐個訪問確認没有安全警告;
  3. 检查證书鏈是否完整,中間證书是否已部署;
  4. 跑一遍全站,找出 HTTPS 頁面里的 HTTP 资源;
  5. 核對 HTTP 到 HTTPS、裸域到主域的跳轉层級;
  6. 確認 HSTS 設定與子域覆盖情况相匹配;
  7. 打開證书到期提醒,留足提前量。

把检查變成固定動作

證书和混合内容的問题不會天天出現,但一旦出現,表現往往很直接:訪客不敢繼續,抓取中断,頁面在结果里的展示也可能受影响。與其等浏览器报警,不如把它排進季度自查。改動服務器配置、更換 CDN、上线新版模板之後,顺手再看一眼證书和资源协议,成本很低,收益很實在。