HTTPS详解:原理 + 加解密过程 + 面试问答

一、HTTP 与 HTTPS 的区别

项目 HTTP HTTPS
全称 HyperText Transfer Protocol HyperText Transfer Protocol Secure
端口 80 443
协议层 应用层 应用层 + TLS(安全层)
加密方式 明文传输 加密传输(TLS)
安全性 易被劫持、中间人攻击 可加密、防篡改、防伪装
是否需证书 否 是(由 CA 机构颁发)

二、HTTPS 的核心安全保障

HTTPS 基于 TLS(或旧版 SSL)实现以下三个目标:

  1. 机密性(防监听):使用对称加密加密数据内容
  2. 身份认证(防伪装):通过数字证书验证服务器身份
  3. 完整性校验(防篡改):使用摘要算法保证数据未被修改

三、HTTPS 加密通信原理(TLS 握手过程)

混合加密机制:

加密方式 使用目的 特点
非对称加密 握手阶段传输密钥 安全但慢
对称加密 正文传输 快但需安全传递密钥
摘要 + MAC 校验完整性 防止数据被篡改

TLS 1.2 握手步骤:

Client Server 1. Client Hello(支持算法、随机数) 2. Server Hello(选定算法、证书、随机数) 3. 验证证书 → 生成密钥 → 加密发送 4. 解密密钥 → 会话密钥建立 5. 用对称密钥加密通信开始 Client Server


四、数字证书与身份认证

数字证书包含:

  • 公钥
  • 服务器域名
  • 颁发机构(CA)
  • 有效期
  • 签名算法(SHA256)

验证方式:

客户端浏览器内置 根证书列表,通过链式验证服务器的证书是否被信任。


五、TLS 1.3 对比 TLS 1.2

特性 TLS 1.2 TLS 1.3
握手轮次 至少 2 次 RTT 最快 1 次 RTT(支持 0-RTT)
加密套件 多(含部分弱算法) 默认强加密(去除 RSA 握手)
会话恢复 使用 Session ID/Ticket 使用 PSK
前向保密 可选 默认启用

六、HTTPS 常见问题总结

1. HTTPS 为什么比 HTTP 安全?

答: HTTPS 使用 TLS 实现加密通信、防监听、防篡改和身份认证,相比 HTTP 明文传输更安全。


2. HTTPS 使用哪些加密算法?

类型 说明 示例算法
非对称加密 握手阶段传输密钥 RSA、ECDHE
对称加密 加密通信内容 AES、ChaCha20
摘要算法 校验完整性 SHA-256、HMAC

3. HTTPS 全程使用非对称加密吗?

答: 否。

握手阶段使用非对称加密交换对称密钥,之后的通信使用对称加密(更高效)。


4. 数字证书是什么?客户端如何验证?

答: 证书由 CA 签发,包含服务器公钥、域名等信息。客户端通过浏览器预置的根证书验证其合法性(链式信任模型)。


5. TLS 握手过程简述?

答: 客户端发送 Hello → 获取服务器证书 → 验证后生成对称密钥 → 使用公钥加密密钥传输 → 建立安全通道。


6. 中间人攻击是什么?HTTPS 如何防止?

答: 中间人伪装成服务端窃听数据。HTTPS 使用证书认证 + 加密通信,确保客户端只能与真正的服务器通信,防止中间人。


7. TLS 1.2 vs TLS 1.3 的主要区别?

  • TLS 1.3 性能更优,握手更快(支持 0-RTT)
  • 移除不安全算法,默认启用前向保密
  • 加密元数据更强,防止探测

七、总结

特性 HTTPS 优势
保密性 数据加密,防止监听
身份认证 数字证书,防止伪造
完整性 摘要校验,防止数据被篡改
性能(TLS 1.3) 握手更快,资源更节省
应用场景 登录、支付、传输隐私数据的所有 Web 应用场景
相关推荐
Mikko724 分钟前
Redis 连接数满了服务端有错误信息吗?连接数不增加却命令超时?6.2 实测连接池、超时与大 key 怎么判定
java·spring boot·redis·后端
.Bryce.31 分钟前
从零到一开发技术名词大全:从需求分析到 AI Agent 工程
java·网络·人工智能·agent·需求分析·agent评测
SL_staff43 分钟前
JVS-APS的7个刚性约束设计:从无限产能幻觉到可执行排产的工程实践
java·spring cloud·全栈
Black蜡笔小新2 小时前
上云网关/端口穿透/设备上云EasyNTS:无需公网IP、也不改防火墙,设备怎么从内网跑到外网去
网络·网络协议·tcp/ip
代码山河2 小时前
基本类型转换:自动类型转换与强制类型转换
java·学习·架构·教程·面向对象·项目
Escalating_xu3 小时前
【Linux 网络编程】五种 I/O 模型与非阻塞 I/O:从“等数据”到正确处理 EAGAIN
java·linux·网络
程序猿乐锅4 小时前
万字详解Single-flight(单飞模式)
java·开发语言·分布式·后端·学习·single-flight
Java后端的Ai之路4 小时前
【AIAgent开发】-Agent工具封装成CLI(纯干货!!!)
java·javascript·人工智能·agent·cli
AntsData4 小时前
用 12K+ 条亚马逊评论信号,定位机械键盘下一版该改什么
java·大数据·计算机外设
code2cat5 小时前
【随笔】连续批处理:长短请求怎样在迭代之间补位
java·人工智能·后端·大语言模型·vllm