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。
证书和跳转属于访问层的基础设施,这一层出问题时,页面内容做得再好也没有机会被读到。定期花十分钟检查,比出问题后再排查要省事得多。