真实面经题目 · 原创解析
HTTP 和 HTTPS 有什么区别?
HTTP 和 HTTPS 的核心区别在于 HTTPS 是运行在 TLS 之上的 HTTP。HTTP 明文传输,默认不提供身份认证、加密和完整性保护;HTTPS 通过证书、密钥协商、对称加密和完整性校验,提供防窃听、防篡改和服务器身份认证能力。
真实面经题目 · 原创解析
HTTP 和 HTTPS 的核心区别在于 HTTPS 是运行在 TLS 之上的 HTTP。HTTP 明文传输,默认不提供身份认证、加密和完整性保护;HTTPS 通过证书、密钥协商、对称加密和完整性校验,提供防窃听、防篡改和服务器身份认证能力。
可以从协议栈、安全能力、端口、性能和运维成本回答。HTTP 直接基于 TCP 传输应用数据,默认端口 80,内容是明文,容易被监听、篡改或冒充。HTTPS 是 HTTP 加上 TLS,默认端口 443;TLS 握手会校验证书、协商密钥,之后加密传输 HTTP 请求和响应,并提供完整性保护。HTTPS 会增加握手成本和证书管理成本,但现代 TLS、会话复用、HTTP/2、HTTP/3 和硬件加速已经显著降低开销。当前公网业务通常应默认使用 HTTPS。
HTTP 是应用层协议,规定请求方法、状态码、头部和消息体格式。传统 HTTP 直接跑在 TCP 上,数据以明文形式传输。HTTPS 不是另一套完全不同的业务语义,而是在 HTTP 与 TCP 之间加入 TLS 安全层;HTTP 的方法、URL、状态码、Header 语义大体不变,但传输过程被 TLS 保护。
HTTP 默认没有加密,链路上的中间节点可以读取内容;也没有强身份认证,客户端难以确认对方一定是目标服务器;完整性保护也不足,中间人可以修改响应内容。HTTPS 通过证书验证身份,通过密钥协商建立会话密钥,通过认证加密或消息认证保护数据,从而同时覆盖机密性、完整性和身份认证。
HTTP 建立 TCP 连接后即可发送请求。HTTPS 还需要 TLS 握手,双方协商协议版本、密码套件、密钥材料,并完成证书校验。TLS 1.3 将握手流程简化,配合会话恢复可以减少重复连接的往返开销。连接建立后,应用层仍然发送 HTTP 请求,只是内容在 TLS 记录层内被保护。
HTTP 默认使用 80 端口,HTTPS 默认使用 443 端口。HTTPS 需要服务器配置证书和私钥,证书要覆盖正确域名,并在有效期内由可信 CA 签发。运维上还要关注证书续期、协议版本禁用、密码套件配置、HSTS、混合内容和反向代理终止 TLS 的边界。
HTTPS 确实比纯 HTTP 多了握手和加解密成本,但现代网络环境中这通常不是采用 HTTPS 的阻碍。TLS 1.3、会话恢复、连接复用、硬件 AES 加速和边缘代理都能降低成本。另一方面,浏览器安全能力、Service Worker、HTTP/2 和很多平台 API 都更偏向或要求安全上下文,HTTPS 已经是生产默认选项。
不能完全隐藏。IP 地址对网络路由可见,传统 SNI 中域名也可能暴露。HTTPS 主要保护 HTTP 内容和大部分头部,域名隐私还涉及 ECH、DNS 加密等额外机制。
不是。它依赖证书信任链、客户端校验、服务器配置和实现安全。如果证书被错误信任、私钥泄露、客户端忽略校验或使用过时协议,仍可能有风险。
因为 HTTP 明文传输,用户输入、Cookie、页面内容都可能被窃听或篡改。浏览器通过提示推动站点使用 HTTPS,减少用户在不安全通道中提交敏感信息。
可以,但安全边界会转移到代理和内网链路。高安全场景会要求代理到后端也使用 TLS,或至少确保内网隔离、访问控制和可信传输环境。