HTTPS 已经是多數站点的預設狀態,但證书和頁面里的资源引用並不是装好一次就一劳永逸。證书會在某天悄悄過期,模板改版时也可能把 http:// 的资源地址重新带回来。這两類問题不會影响你在後台看到的内容,却會直接影响訪客的第一印象,以及蜘蛛抓取到的頁面质量。
證书本身要看的几個点
先別只看地址栏有没有鎖。至少要確認四項:
- 有效期:剩余天數是多少,自動續期是否真的在跑。很多事故不是没有續期脚本,而是脚本默默失敗了好几個月,没人看它的日誌。
- 域名覆盖:證书是否同时覆盖带 www 和不带 www 的寫法,以及需要用到的子域名。只簽了一個名字,另一個名字訪問时就會报错。
- 證书鏈完整:中間證书缺失时,現代浏览器可能自動补齐,但部分抓取工具和老舊客戶端會直接判定不可信。可以在终端用 openssl 连接站点,確認返回的證书鏈是否完整。
- 协议與加密套件:關掉過舊的 TLS 版本是對的,但也要確認没有把仍在使用的客戶端挡在门外,改動後最好換几種客戶端各测一遍。
混合内容:鎖還在,頁面里却留着 http
混合内容指的是 https 頁面里引用了 http:// 開头的资源。图片、脚本、样式表、字体都可能出現,常见来源是舊模板、第三方統計代碼、图床或 CDN 里寫死的地址。
浏览器對它的處理並不一致:图片這類被動内容通常被拦截或降級加载,脚本和样式表這類主動内容則會被直接阻止。结果是頁面看起来加载了一半,或者样式明顯错乱,而服務器日誌里一切正常。
怎么把它們找出来
- 打開浏览器開發者工具,看控制台里的 Mixed Content 提示,同时看網絡面板中狀態異常的請求。
- 把 https 頁面的源碼儲存下来,搜尋 http:// 字符串,重点检查图片、脚本、样式和字体的引用地址。
- 如果是模板或内容系統,優先改模板里的资源地址,改成相對寫法或直接寫 https,而不是逐個頁面手工修。
這件事和抓取的關系
證书出错或资源大面积加载失敗时,蜘蛛看到的頁面和你看到的並不一样。證书鏈異常可能让连接直接建立失敗,混合内容被拦截則可能让關键内容不進入渲染结果。對 URL 發現来说,更麻烦的情况是内鏈所在的脚本被阻塞,頁面上的連結根本没有机會被解析出来。
把“浏览器能打開”当成“没問题”,是這類故障最容易踩的坑:人工訪問往往有缓存和浏览器补全帮忙,只有關閉缓存、換網絡、換客戶端,才能看到真實狀態。
把检查變成例行工作
證书和混合内容都属于平时不出声、出事就很明顯的項目,适合放進固定节奏:
- 到期前 30 天、14 天、7 天各安排一次提醒,提醒發给具体的人,而不是丢進一個没人看的群。
- 自動續期之後做一次實际訪問驗證,確認到期時間或證书指纹确實變了。
- 模板、CDN、統計代碼發生調整後,抽查几個代表性頁面,看是否又混進 http:// 资源。
- 带 www、不带 www、主要子域各测一遍,覆盖證书里寫到的所有名字。
- 如果啟用了 HSTS,改動协议配置前先想清楚回退的成本。
自查清單
- 證书剩余有效期與自動續期狀態是否確認過。
- 證书是否覆盖所有對外使用的域名寫法。
- 證书鏈是否完整,抓取工具能否正常建立连接。
- https 頁面里是否還有 http:// 的图片、脚本、样式和字体。
- 是否有一個通知渠道,在證书異常或 HTTPS 不可用时能及时告警。
這些检查花不了多少時間,但能避開一類很尴尬的故障:訪客点進来先看到安全警告,蜘蛛抓到的是一份不完整的頁面。