HTTPS 現在基本是标配,很多站点配置好之後就很少再回头看。但證书是會過期的,域名會增减,CDN 节点會更換,配置也可能在某次迁移中被改回 HTTP。這些問题在浏览器里也许只是偶尔一次警告,對搜尋蜘蛛来说却可能直接變成訪問中断。
證书本身要核對的几件事
- 有效期:到期時間是什么时候,是否進入了需要續期的窗口。建议提前 30 天以上開始處理,不要等到最後几天。
- 域名覆盖:主域名、www 版本、移動端域名、其它绑定域名是否都在證书的域名列表里。新增子域後忘了加證书是常见疏漏。
- 證书鏈完整性:只部署了站点證书、漏掉中間證书的情况並不少见。多數浏览器會自行补全,但部分客戶端和爬虫對不完整的鏈更敏感,容易出現握手失敗。
- 簽發来源:是否還在用自簽名或不受信任的證书。測試环境切到正式环境时忘记替換的情况时有發生。
- 协议版本與加密套件:是否只保留了過舊的协议,導致部分訪問方無法协商成功。
协议與域名版本是否收敛到一處
http、https、带 www、不带 www,理论上會形成四個版本。理想狀態是只保留一個可用版本,其余三個用 301 指向它,而且最好一跳到位。如果出現 http 跳到 https、再跳到 www、最後又跳到另一個地址,中間任何一环出問题都會让訪問失敗。
混合内容:頁面里還挂着 http 资源
頁面本身是 https,但正文里的图片、脚本、样式或字体仍然通過 http 地址引用。浏览器會给出混合内容警告,部分环境會直接拒绝加载。這類問题在模板、第三方統計代碼、老編輯器上传的图片里最容易残留,可以查看頁面源碼,搜尋 http:// 開头的资源引用。
CDN 與多节点环境下容易漏的地方
- CDN 只配置了邊缘證书,回源仍是 http,回源鏈路不稳定时节点可能返回错誤。
- 使用了泛域名證书,但新增的某個子域並不在證书覆盖范围内。
- 节点缓存了舊的跳轉規則,改完配置後不同地区訪問到的版本不一致。
一套可执行的检查顺序
- 用命令行工具或在线檢測服務查看證书詳情,重点看有效期、域名覆盖和證书鏈是否完整。
- 分別訪問 http、https、www、非 www 四個版本,记錄跳轉次數和最终落地的地址。
- 打開頁面源碼與控制台,查找仍然使用 http 的资源引用。
- 確認 HSTS 是否開啟。開啟之前,要先確認该域名下的所有子域都已支持 https,否則會把它們挡在外面。
- 把證书到期時間寫進运维清單,設定提醒,不要依赖某個人记得。
發現問题後的處理顺序
先保證唯一版本的地址可以正常訪問,再調整跳轉規則,最後處理缓存和 CDN 节点。每次改動之後,隔一段時間查看服務器日誌,確認蜘蛛拿到的响應碼是否正常,有没有出現握手失敗或大量 5xx。
證书和跳轉属于訪問层的基础设施,這一层出問题时,頁面内容做得再好也没有机會被讀到。定期花十分钟检查,比出問题後再排查要省事得多。