站点运营

站点运营:HTTPS 證书與混合内容自查,別让訪客先撞上安全警告

換域名、上 CDN、迁服務器之後,HTTPS 常會留下一些尾巴:證书快過期没人管、頁面里還混着 http 资源、一次訪問要跳两三次。這篇文章给出一份可执行的證书與混合内容自查清單,包括證书鏈、域名覆盖、协议统一、CDN 邊缘證书等环节,帮你把問题在上线前後都過一遍。

站点运营

站点运营:HTTPS 證书與混合内容自查,別让訪客先撞上安全警告

換域名、上 CDN、迁移服務器,都會顺手動到 HTTPS 配置。事情做完,頁面看起来正常,但證书和协议层面往往留下一些尾巴:證书快到期没人管、頁面里還混着 http 的资源、一次訪問要跳两三次。訪客可能只看到一次安全警告,但這背後通常同时影响加载速度和蜘蛛抓取。

一、先確認證书本身没有問题

證书問题最容易被忽略,因為它在浏览器里往往是静默的,只有到期那天才跳出来。建议按下面几項逐個過一遍。

  • 有效期與剩余天數:记錄目前證书的到期時間,確認自動續期任務是真的在跑。很多人配了續期脚本,但脚本早就失敗,只是没人收到提醒。
  • 證书鏈是否完整:只部署站点證书、忘了中間證书,部分客戶端和抓取工具可能不認,表現是有的环境正常、有的环境直接报错。
  • 域名覆盖范围:带 www 和不带 www 的域名、子域名、绑定的其他域名,是否都在同一張證书里。少寫一個名字,就等于给那個入口留了一個警告頁。
  • 續期之後服務是否生效:證书文件更新了,但 Web 服務或 CDN 没有重新加载,线上用的還是舊證书,這種情况很常见。

二、混合内容:頁面里還藏着 http 资源

HTTPS 頁面里引入 http 的图片、脚本、样式或字体,就是混合内容。浏览器對它的處理並不一致:脚本一類通常直接拦截,图片可能降級顯示並给出提示。自查时可以從這几個方向找。

  • 查看頁面源碼,搜尋 http:// 開头的资源地址,包括图片、JS、CSS、字体、iframe 和嵌入的视频。
  • 检查資料库里存的老連結。早期發布的文章里粘的外鏈、舊編輯器寫入的绝對地址,都可能在換协议後變成 http。
  • 注意协议相對寫法。寫成 //example.com/xxx 的资源會跟随目前頁面协议,一旦某個入口還是 http,它就會跟着走错。
  • 看浏览器開發者工具的 Console 和 Network,混合内容通常會有明确的告警,比肉眼翻源碼快得多。

三、跳轉與协议要统一

协议统一不只是把 http 跳到 https,還要控制跳轉次數。一次改版下来,訪客從 http 跳到 https、再從裸域跳到 www,鏈路越長体驗越差。

  • 让 http 直接 301 到最终的 https 地址,中間不要再绕。
  • 站内連結、站点地图、canonical、分頁地址,都统一寫最终使用的那個协议和域名形式。
  • 检查是否出現 https 版裸域再跳 www 的情况,這類二次跳轉可以合並掉。
  • HSTS 能减少跳轉,但開啟前要確認所有子域名都能用 HTTPS 正常訪問。開啟时带上子域名選項,更要谨慎。

四、CDN 與多域名场景下的額外注意

用了 CDN 之後,證书通常有两层:邊缘节点上的證书和回源时使用的證书,两层的到期時間和覆盖域名可能是分開维護的,容易只顾一头。

  • 分別確認邊缘證书和回源證书的有效期與域名列表。
  • 回源如果走 http,至少確認這一段在可信網絡内,不要走公網明文。
  • 整理一份域名與證书的對應清單:哪些用泛域名證书、哪些用單域名證书、各自在哪里續期、續期後需要谁去重新上传。

五、把检查做成例行動作

這類問题排查本身不复杂,难的是有人定期做。可以固定几個轻量動作:

  1. 用 curl 看响應头,確認狀態碼與跳轉是否和预期一致。
  2. 用 openssl 之類的命令行工具查看實际返回的證书鏈和到期時間,而不是只看配置文件。
  3. 在證书到期前一個月設定提醒,並寫明續期责任人和操作路径。
  4. 每次換域名、換 CDN、迁移服務器之後,前後各做一次完整检查。
證书和协议這類基础配置,平时不出声,出問题时又很难临时补救。與其等訪客截图来問,不如把它放進例行的自查清單里。