换域名、上 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,至少确认这一段在可信网络内,不要走公网明文。
- 整理一份域名与证书的对应清单:哪些用泛域名证书、哪些用单域名证书、各自在哪里续期、续期后需要谁去重新上传。
五、把检查做成例行动作
这类问题排查本身不复杂,难的是有人定期做。可以固定几个轻量动作:
- 用 curl 看响应头,确认状态码与跳转是否和预期一致。
- 用 openssl 之类的命令行工具查看实际返回的证书链和到期时间,而不是只看配置文件。
- 在证书到期前一个月设置提醒,并写明续期责任人和操作路径。
- 每次换域名、换 CDN、迁移服务器之后,前后各做一次完整检查。
证书和协议这类基础配置,平时不出声,出问题时又很难临时补救。与其等访客截图来问,不如把它放进例行的自查清单里。