为什么 HTTPS 问题容易被忽略
站点跑起来之后,HTTPS 往往是最不被想起的一环。证书装好那天能用,之后很少有人再点开地址栏看那把锁。可证书是有有效期的,通常 90 天到一年不等;自动续期的脚本也可能因为某次服务器迁移、权限变更或目录调整而静默失败。等到证书过期,最先感知到的可能不是你,而是访客看到的安全警告,以及抓取工具在握手阶段就断掉的连接。
比过期更隐蔽的是混合内容:页面本身走 HTTPS,但里面仍引用着 HTTP 的图片、脚本、样式或 iframe。浏览器会把这类资源当作不安全内容拦截或降级,结果就是图片不显示、样式错乱,蜘蛛看到的页面和你想让它看到的并不一样。
一份可执行的证书自查清单
1. 到期时间与续期状态
- 记录当前证书的签发时间和到期时间,把提醒设在到期前 30 天,而不是前 3 天。
- 确认自动续期任务真的在跑,查计划任务或定时器,看最近一次续期日志,不要只看配置文件还在。
- 续期成功后重新加载 Web 服务,确认新证书已生效,旧证书没有残留在缓存里。
2. 域名覆盖范围
- 核对证书的 SAN 列表,确认裸域、www 域以及实际在用的子域名都在里面。
- 如果用了泛域名证书,注意它一般只覆盖一级子域,多级子域要单独确认。
- 站点实际访问的域名和证书里的域名要对得上,避免访客被提示证书不匹配。
3. 证书链是否完整
有些服务器只装了站点证书,漏掉中间证书。桌面浏览器可能自动补齐,但部分客户端和抓取工具会直接判定证书不可信。可以用在线检测工具或命令行查看完整的证书链,确认没有缺口。
4. 跳转链路是否干净
- HTTP 应一次性 301 到 HTTPS,避免 http 到 https、再到带 www 或不带 www 的多级接力。
- 检查是否仍有页面用 302 跳 HTTPS,临时跳转不利于地址统一。
- 确认跳转后的地址、canonical 标签和 sitemap 里的写法一致,都使用 https 前缀。
5. 混合内容排查
- 打开几个代表性页面,用浏览器开发者工具的控制台和网络面板,筛选出 http 开头的请求。
- 重点看历史文章里的外链图片、旧编辑器粘贴进来的 iframe、第三方统计或客服脚本。
- 能替换的资源换成 https,替换不了的直接下线或改成文字链接。
- 在页面模板层面统一使用 https 绝对地址,减少以后再出同类问题。
几个容易踩的细节
HSTS 可以强制浏览器走 HTTPS,但开启前要确保所有子域名都已支持 HTTPS,否则会把还没配好的子域直接锁死。建议先用较短的有效期试运行,观察一阵再延长。
证书续期不会自动帮你改内容。如果站内大量内链、图片地址还写着 http,续期再成功也救不了混合内容。
测试环境和正式环境共用证书、共用配置的情况不少。改动前先确认影响范围,别把测试站的问题带到主站。
证书和 HTTPS 属于基础设施,平时不出声,一出问题就是全站级别的。把它放进日常巡检,比出事后再救火省事得多。
把它变成例行检查
- 每月看一眼证书剩余天数,自动续期成功也要人工确认一次。
- 每次改版、换服务器、换 CDN 之后,重新跑一遍跳转和混合内容检查。
- 把 https 写进模板和编辑规范,新内容发布时就不会再带回 http 资源。
这些检查花不了多少时间,却能把一类常见的抓取和访问故障挡在门外。站点运营里很多工作都是这样:不追求立竿见影,只求别在关键时刻掉链子。