我的测试学习站TEST LEARNING HUB
开始学习
首页/精华文章/2. HTTPS 和 HTTP 有什么区别

2. HTTPS 和 HTTP 有什么区别

HTTPS 和 HTTP 的区别,是网络协议面试里非常高频的问题。很多同学只会回答“HTTPS 比 HTTP 安全,因为加密了”,这个回答方向没错,但太浅。测试岗位回答这个问题,要讲清楚它们在接口测试、抓包、证书、登录鉴权、安全测试和问题定位中的实际影响。面试官真正想知道的是:你是否理解 HTTPS 为什么安全,是否知道证书的作用,是否知道为什么抓包 HTTPS 要安装证书,是否能解释接口访问证书错误、混合内容、Token 泄露等问题。

HTTP 是明文传输协议,HTTPS 是在 HTTP 基础上增加 TLS/SSL 加密层后的安全协议。也就是说,HTTPS 本质上仍然是 HTTP 请求和响应,只是在传输过程中通过加密、身份认证和完整性校验保护数据。测试工程师不需要深入每个加密算法,但必须知道 HTTPS 对测试工作有什么影响。

一、HTTP 和 HTTPS 的核心区别

1. 是否加密

HTTP 是明文传输,请求参数、Header、Cookie、响应内容在网络传输中理论上可以被窃听。

HTTPS 会对传输内容加密,即使被抓到网络包,也难以直接看到明文内容。

这对登录、支付、个人信息、订单信息等敏感场景非常重要。

2. 端口不同

HTTP 默认端口是 80。

HTTPS 默认端口是 443。

实际项目中也可能配置其他端口,但默认端口要知道。

3. 是否需要证书

HTTPS 需要服务端配置 SSL/TLS 证书。浏览器会校验证书是否可信、是否过期、域名是否匹配。

如果证书异常,浏览器可能提示“不安全”或拒绝访问。

4. 安全能力不同

HTTPS 主要提供三类安全能力:

  • 加密:防止内容被窃听;
  • 身份认证:确认访问的服务器是真的;
  • 完整性校验:防止传输内容被篡改。

二、HTTPS 为什么更安全

HTTPS 的安全不是只靠“加密”两个字。它主要解决三个问题。

1. 防窃听

HTTP 明文传输,用户名、密码、Token、Cookie 可能在网络中被看到。HTTPS 加密后,传输内容不容易被直接读取。

2. 防伪装

证书用于证明服务器身份。浏览器访问 https://example.com 时,会校验证书是否属于这个域名,避免用户访问到伪造网站。

3. 防篡改

HTTPS 会校验数据完整性,降低中间人篡改请求或响应内容的风险。

测试中,如果登录接口、支付接口、用户隐私接口还使用 HTTP,就存在明显安全风险。

三、HTTPS 证书测试关注点

测试人员不一定配置证书,但要知道证书问题会导致什么现象。

常见证书问题包括:

  • 证书过期;
  • 证书域名不匹配;
  • 使用自签名证书但浏览器不信任;
  • 证书链不完整;
  • 证书配置在错误服务或错误环境;
  • App 证书校验失败。

表现可能是:

  • 浏览器提示连接不安全;
  • 接口请求失败;
  • App 无法访问接口;
  • 抓包只看到 CONNECT,看不到明文;
  • 自动化脚本请求 HTTPS 报证书错误。

四、为什么抓 HTTPS 要安装证书

Charles、Fiddler 抓 HTTPS 时,通常需要安装并信任抓包工具证书。这是因为 HTTPS 内容是加密的,抓包工具要在客户端和服务端之间做解密代理。

如果没有安装证书,抓包工具可能只能看到:

CONNECT api.example.com:443

看不到具体 URL、请求体和响应体。

安装证书并信任后,抓包工具才能解密 HTTPS 流量。但如果 App 做了证书绑定,普通抓包可能仍然失败。

面试可以这样讲:

HTTPS 是加密传输,所以抓包工具如果要查看请求和响应明文,需要安装并信任抓包工具的根证书,让客户端信任这个代理证书。否则只能看到连接,不一定能看到具体内容。

五、HTTPS 在接口测试中的影响

接口测试工具如 Postman、Requests、RestAssured 调用 HTTPS 接口时,可能遇到证书校验问题。

测试环境经常使用自签名证书,如果客户端不信任,就会请求失败。解决方式可能是导入证书,或者在测试脚本中关闭证书校验。但关闭校验只能用于测试环境,不建议用于生产。

测试要关注:

  • 测试环境是否 HTTPS;
  • 证书是否可信;
  • 是否存在证书过期;
  • 自动化脚本是否能正常访问;
  • 是否错误关闭生产证书校验;
  • 敏感接口是否仍使用 HTTP。

六、HTTP 切 HTTPS 常见问题

项目从 HTTP 改为 HTTPS 后,可能出现:

1. 混合内容

HTTPS 页面中加载 HTTP 图片、脚本或接口,浏览器可能阻止。

表现:页面资源加载失败,控制台提示 Mixed Content。

2. 回调地址错误

支付、第三方登录、短信回调等地址如果仍写 HTTP,可能导致回调失败或安全风险。

如果 Cookie 设置了 Secure,它只能在 HTTPS 下发送。HTTP 环境可能拿不到 Cookie。

4. 证书链问题

某些浏览器或 App 不信任证书,导致部分用户访问失败。

5. 抓包困难

HTTPS 抓包需要安装证书,App 可能有证书绑定。

七、HTTPS 和安全测试

测试敏感业务时,要关注:

  • 登录接口是否使用 HTTPS;
  • 密码是否明文出现在 URL 中;
  • Token 是否通过 HTTPS 传输;
  • Cookie 是否设置 Secure 和 HttpOnly;
  • 是否存在 HTTP 降级访问;
  • 是否有敏感信息在响应中明文返回;
  • 证书是否过期或不可信。

HTTPS 不是万能安全,但它是基础要求。

八、项目场景:登录接口安全性分析

如果登录接口使用 HTTP:

http://api.example.com/login

请求体包含用户名和密码,这就有被窃听风险。测试可以提出安全风险:登录、支付、个人信息等敏感接口应使用 HTTPS。

如果使用 HTTPS,但抓包发现 Token 出现在 URL 查询参数中:

https://api.example.com/user?token=xxx

也不推荐,因为 URL 可能被日志、浏览器历史或网关记录。更常见做法是放在 Header 中。

九、面试回答模板

如果面试官问“HTTPS 和 HTTP 有什么区别”,可以这样回答:

HTTP 是明文传输协议,HTTPS 是在 HTTP 基础上加入 TLS/SSL 加密后的安全协议。HTTPS 相比 HTTP 主要多了加密传输、服务器身份认证和数据完整性校验,所以更适合登录、支付、个人信息等敏感场景。HTTP 默认 80 端口,HTTPS 默认 443 端口。测试中我会关注 HTTPS 证书是否有效、域名是否匹配、是否存在证书过期,抓 HTTPS 包时需要安装并信任 Charles 或 Fiddler 证书。接口测试时也要注意证书校验问题,以及 Cookie Secure、混合内容、回调地址等 HTTPS 切换带来的问题。

十、常见追问

追问:HTTPS 一定安全吗?

不一定。HTTPS 只保证传输层更安全,但如果业务本身有越权、弱密码、Token 泄露、敏感信息返回等问题,仍然不安全。

追问:为什么 HTTPS 抓包要装证书?

因为 HTTPS 是加密的,抓包工具需要作为中间代理解密流量,客户端必须信任抓包工具证书才能看到明文内容。

追问:证书过期会怎样?

浏览器或客户端可能提示不安全,甚至拒绝访问接口,自动化脚本也可能请求失败。

追问:HTTP 切 HTTPS 后要测什么?

测证书、页面资源、接口请求、回调地址、Cookie、抓包、App 访问和自动化脚本兼容性。

十一、练习清单

  1. 区分 HTTP 和 HTTPS;
  2. 记住默认端口 80 和 443;
  3. 理解证书作用;
  4. 用浏览器查看网站证书;
  5. 用 Charles 抓 HTTPS 请求;
  6. 分析一次证书错误;
  7. 检查登录接口是否 HTTPS;
  8. 理解 Cookie Secure;
  9. 理解混合内容问题;
  10. 准备 HTTPS 面试回答。

HTTPS 和 HTTP 的区别,测试回答不能只停留在“加密更安全”。要结合证书、抓包、接口测试、安全测试、Cookie、回调和项目风险一起讲,才是真正有测试思维的回答。

配套刷题: