要判断一个站点是否真正用上了 HTTPS 的优势,检查前需要准备六类信息:当前证书与协议状态、全站资源加载清单、重定向与跳转记录、各搜索引擎的收录与展现数据、混合内容与安全告警记录,以及改造前后的对照时间点。缺少其中任何一类,都只能看到现象而无法定位原因。
这是最基础的一层。需要准备的内容包括:证书颁发对象、有效期、覆盖的域名范围(是否含 www、子域名、通配符)、证书链是否完整,以及服务器支持的协议版本与加密套件。
获取方式很直接:用浏览器打开目标页面,查看地址栏的锁标识与证书详情;或用命令行工具查看握手过程。例如:
openssl s_client -connect example.com:443 -servername example.com
判断条件:如果证书已过期、域名不匹配或证书链不完整,浏览器会直接拦截,此时谈 HTTPS 优势没有意义。如果握手正常但只覆盖主域名,那么子域名仍可能走明文,需要单独确认。
HTTPS 页面里混入 HTTP 资源,会触发混合内容拦截,锁标识消失或降级。检查前要准备一份完整资源清单:图片、脚本、样式表、字体、iframe、接口请求地址。
实际操作可以打开浏览器开发者工具,切到网络面板,刷新页面,按协议列筛选出仍以 http:// 开头的请求。也可以用命令行抓取页面源码后搜索:
grep -o 'http://[^"]*' page.html
适用条件:这个方法适合静态页面和首屏资源排查,但对由 JavaScript 动态拼接的地址可能漏检,需要结合网络面板的运行时记录一起看。判断结果是——只要还有 HTTP 资源被加载,HTTPS 的传输保护就是不完整的,用户端会出现警告或内容缺失。
从 HTTP 到 HTTPS 的切换,关键在于跳转是否完整、是否只有一次、是否存在循环。需要准备的信息包括:每个旧地址的响应状态码、跳转目标、跳转层数,以及是否保留了原始路径和参数。
检查方式:对典型页面逐条请求,观察状态码序列。例如:
curl -I http://example.com/page
可能原因有多种:配置了 301 但目标写成首页,导致路径丢失;或者 HTTP 与 HTTPS 互相跳转形成循环。已经定位的原因要以实际返回的状态码和 Location 头为准,不能凭猜测。判断标准是——跳转应一步到位到对应的 HTTPS 地址,状态码为 301 或 308,且路径与参数保持一致。
HTTPS 改造后,需要分别核查不同搜索引擎对 HTTPS 版本的抓取与收录情况,不能用一个平台的数据推断另一个平台。准备内容包括:站点地图中提交的地址协议、抓取统计中的响应码分布、索引库中 http 与 https 两个版本的并存情况、以及搜索结果里展示的最终地址。
这里有两个常见误解需要提前澄清:站点地图提交不保证收录;robots.txt 的抓取限制不等于可靠的索引移除。如果想让旧版 HTTP 地址退出索引,仅靠 robots.txt 屏蔽抓取并不能保证它从结果中消失,还需要配合重定向和规范化声明,并给搜索引擎处理时间。
判断结果:如果两个协议版本同时被索引,说明规范化信号不清晰;如果抓取统计里 HTTPS 地址大量返回 5xx 或超时,说明服务器在加密握手或跳转环节存在压力问题。
HTTPS 不保证站点安全无漏洞,也不保证排名提升。它只解决传输环节的加密与身份验证。因此检查前还要准备:浏览器控制台的安全告警、服务器错误日志中与 TLS 相关的条目、证书透明度日志中的签发记录,以及是否存在过期或误签发的证书。
这一步的作用是区分“传输层正常”和“站点整体安全”。如果日志里出现大量握手失败,可能原因包括客户端协议版本过旧、证书链不被信任、或中间设备拦截;只有结合具体错误码才能确认是哪一种。
代价与取舍:全站 HTTPS 会增加证书维护成本和握手开销,配置不当还可能带来跳转损耗和混合内容问题。但如果站点涉及登录、表单或支付,不启用 HTTPS 的风险远高于这些成本。判断依据是页面上是否存在需要保护的传输数据,而不是单纯追求协议标签。
下一步,先打开开发者工具的网络面板,把当前页面所有非 HTTPS 请求导出成一份清单,再对照上面的五类信息逐项补齐。