给站点配了 HTTPS,不代表这件事就结束了。证书有有效期,页面里也可能残留 http:// 的引用,这两件事平时不显眼,一旦出问题却是整站级别的:访客看到浏览器警告直接退出,监控和抓取工具拿不到正常响应,日志里的抓取失败率会突然上升。对做站点运营的人来说,这是一项需要排进例行检查的工作,而不是出了问题才想起来的事。
证书本身要查什么
证书不是配一次就长期有效的资产。下面几项建议按固定周期过一遍。
- 到期时间:确认剩余有效期,并确认自动续期真的在跑。续期失败往往是因为验证方式变了、DNS 记录被改动,或者续期脚本早就没在执行。
- 覆盖的域名:主域、www、移动端域名、接口域名、CDN 回源域名分别用什么证书。单域名证书换成通配符或多域名证书时,容易漏掉某个子域。
- 证书链完整:中间证书缺失时,部分客户端能访问、部分不能,表现得很随机。用命令行工具或在线检测看整条链是否完整。
- 协议版本与加密套件:太老的 TLS 版本会被现代客户端拒绝,太新的要求又可能挡住旧设备,按访客设备情况取一个合理区间。
- CDN 与源站两边:用了 CDN 之后,访客看到的是边缘节点的证书。源站证书过期可能不影响访客,但会影响回源和直连抓取,两边都要看。
混合内容是更容易被忽略的一半
页面整体是 https,里面却引用了 http 的资源,浏览器会拦截或给出警告。图片、样式、脚本、字体、iframe、接口请求、favicon 都算。它通常出现在几个地方:早期写死的绝对地址、第三方组件里的默认地址、编辑器粘贴进来的外链图片,以及模板里遗留的旧域名。
检查方式比较直接:在浏览器控制台看有没有混合内容提示,或者用抓取工具把站内页面跑一遍,筛出所有以 http:// 开头的资源地址。还有一个细节是 CSS 文件里的 url() 和 JS 动态拼接出来的地址,这些在页面源码里不一定看得见,需要单独过一遍。
别忘了页面里指向自己的绝对链接。如果内链写成 http://,访客每次点击都要多跳一次,相当于白花一跳。
换证书、换域名时容易踩的坑
- HSTS:开启之后浏览器会强制走 https,一旦证书出问题,连继续访问的入口都没有。开启前先确认所有子域都能正常 https 访问。
- 预发和内网环境:这些环境经常用自签证书,抓取和监控工具访问时会报错,别把这类报错当成线上故障处理。
- 站点地图和结构化数据里的地址:这些文件里如果写着 http 地址,会把发现入口指向旧协议,值得一起改掉。
- 操作时间点:避开流量高峰,改完立即从不同网络环境验证一次,包括移动网络。
把它变成一条例行项
不需要复杂的系统。把证书到期时间记进日历,提前两周提醒;准备一条命令或一个检测脚本,需要时跑一次;每次站点改版、换 CDN、加子域之后,顺手检查一遍协议和资源地址。这些事情单次花不了多少时间,但能避免一次整站不可用的意外。
证书和协议这类问题,平时做得对没有任何存在感,出问题时却是全站级别的。与其等访客反馈或抓取失败来提醒,不如把它放进固定的检查清单里。