站点运营

站点运营:HTTPS 证书与混合内容自查,别让安全警告挡住访客

HTTPS 配好并不等于一劳永逸。本文梳理证书有效期、域名覆盖、证书链完整性与混合内容这几类容易被忽略的问题,并给出可执行的检查方法和例行自查清单,避免访客迎面看到安全警告、蜘蛛拿到一份不完整的页面。

站点运营

站点运营:HTTPS 证书与混合内容自查,别让安全警告挡住访客

HTTPS 已经是多数站点的默认状态,但证书和页面里的资源引用并不是装好一次就一劳永逸。证书会在某天悄悄过期,模板改版时也可能把 http:// 的资源地址重新带回来。这两类问题不会影响你在后台看到的内容,却会直接影响访客的第一印象,以及蜘蛛抓取到的页面质量。

证书本身要看的几个点

先别只看地址栏有没有锁。至少要确认四项:

  • 有效期:剩余天数是多少,自动续期是否真的在跑。很多事故不是没有续期脚本,而是脚本默默失败了好几个月,没人看它的日志。
  • 域名覆盖:证书是否同时覆盖带 www 和不带 www 的写法,以及需要用到的子域名。只签了一个名字,另一个名字访问时就会报错。
  • 证书链完整:中间证书缺失时,现代浏览器可能自动补齐,但部分抓取工具和老旧客户端会直接判定不可信。可以在终端用 openssl 连接站点,确认返回的证书链是否完整。
  • 协议与加密套件:关掉过旧的 TLS 版本是对的,但也要确认没有把仍在使用的客户端挡在门外,改动后最好换几种客户端各测一遍。

混合内容:锁还在,页面里却留着 http

混合内容指的是 https 页面里引用了 http:// 开头的资源。图片、脚本、样式表、字体都可能出现,常见来源是旧模板、第三方统计代码、图床或 CDN 里写死的地址。

浏览器对它的处理并不一致:图片这类被动内容通常被拦截或降级加载,脚本和样式表这类主动内容则会被直接阻止。结果是页面看起来加载了一半,或者样式明显错乱,而服务器日志里一切正常。

怎么把它们找出来

  • 打开浏览器开发者工具,看控制台里的 Mixed Content 提示,同时看网络面板中状态异常的请求。
  • 把 https 页面的源码保存下来,搜索 http:// 字符串,重点检查图片、脚本、样式和字体的引用地址。
  • 如果是模板或内容系统,优先改模板里的资源地址,改成相对写法或直接写 https,而不是逐个页面手工修。

这件事和抓取的关系

证书出错或资源大面积加载失败时,蜘蛛看到的页面和你看到的并不一样。证书链异常可能让连接直接建立失败,混合内容被拦截则可能让关键内容不进入渲染结果。对 URL 发现来说,更麻烦的情况是内链所在的脚本被阻塞,页面上的链接根本没有机会被解析出来。

把“浏览器能打开”当成“没问题”,是这类故障最容易踩的坑:人工访问往往有缓存和浏览器补全帮忙,只有关闭缓存、换网络、换客户端,才能看到真实状态。

把检查变成例行工作

证书和混合内容都属于平时不出声、出事就很明显的项目,适合放进固定节奏:

  1. 到期前 30 天、14 天、7 天各安排一次提醒,提醒发给具体的人,而不是丢进一个没人看的群。
  2. 自动续期之后做一次实际访问验证,确认到期时间或证书指纹确实变了。
  3. 模板、CDN、统计代码发生调整后,抽查几个代表性页面,看是否又混进 http:// 资源。
  4. 带 www、不带 www、主要子域各测一遍,覆盖证书里写到的所有名字。
  5. 如果启用了 HSTS,改动协议配置前先想清楚回退的成本。

自查清单

  • 证书剩余有效期与自动续期状态是否确认过。
  • 证书是否覆盖所有对外使用的域名写法。
  • 证书链是否完整,抓取工具能否正常建立连接。
  • https 页面里是否还有 http:// 的图片、脚本、样式和字体。
  • 是否有一个通知渠道,在证书异常或 HTTPS 不可用时能及时告警。

这些检查花不了多少时间,但能避开一类很尴尬的故障:访客点进来先看到安全警告,蜘蛛抓到的是一份不完整的页面。