HTTP与HTTPS全面对比及HTTPS加密流程详解
一、HTTP与HTTPS核心区别
特性 | HTTP | HTTPS |
---|---|---|
协议基础 | 明文传输 | HTTP + SSL/TLS加密层 |
默认端口 | 80 | 443 |
加密方式 | 无加密 | 混合加密(非对称+对称) |
证书要求 | 不需要 | 需要CA颁发的数字证书 |
安全性 | 易被窃听、篡改、冒充 | 防窃听、防篡改、身份认证 |
性能开销 | 无加密开销 | 增加10-20%的CPU消耗 |
SEO影响 | 无特殊优势 | 搜索引擎排名加权 |
二、HTTP协议内容组成
1. 请求报文结构
GET /index.html HTTP/1.1\r\n
Host: www.example.com\r\n
User-Agent: Mozilla/5.0\r\n
Accept: text/html\r\n
\r\n
[请求体]
请求行:方法(GET/POST等) + URI + 协议版本
请求头:
通用头:Cache-Control、Connection
请求头:Accept、Authorization
实体头:Content-Type、Content-Length
空行:\r\n
请求体:POST/PUT等方法携带的数据
2. 响应报文结构
HTTP/1.1 200 OK\r\n Content-Type: text/html\r\n Content-Length: 1234\r\n \r\n <!DOCTYPE html>...
状态行:协议版本 + 状态码 + 状态描述
响应头:
通用头:Date、Server
响应头:Location、Set-Cookie
实体头:同上
空行:\r\n
响应体:实际返回内容
3. 主要方法
方法 | 作用 | 幂等性 |
---|---|---|
GET | 获取资源 | 是 |
POST | 提交数据 | 否 |
PUT | 替换资源 | 是 |
DELETE | 删除资源 | 是 |
HEAD | 获取报文首部 | 是 |
三、HTTPS加密机制详解(结合了对称加密和非对称加密)
1. 加密类型组合
非对称加密(用于密钥交换)
算法:RSA、ECDHE
作用:安全传输对称加密的密钥
对称加密(用于数据传输)
算法:AES、ChaCha20
作用:加密实际通信内容
2. HTTPS完整流程(TLS 1.2)
现代TLS 1.3优化
TLS 1.3(2018年发布)做了重大改进:
1-RTT握手:默认支持前向安全的ECDHE
0-RTT模式:对近期连接过的服务器可立即发送加密数据
简化密码套件:移除不安全的算法(如RSA密钥交换)
加密证书:服务器证书在加密扩展中发送
3. 密钥交换两种方式
(1) RSA密钥交换
(2) ECDHE密钥交换(前向安全)
密钥交换算法对比
特性 | RSA密钥交换 | ECDHE密钥交换 |
---|---|---|
前向安全性 | 无 | 有 |
密钥生成开销 | 服务器低 | 双方都需要计算 |
主流支持 | TLS 1.2及以下 | TLS 1.2/1.3首选 |
密钥材料 | 静态服务器密钥 | 临时密钥对 |
4. 会话密钥生成
双方使用以下参数生成相同的会话密钥:
Client Random
Server Random
Premaster Secret
通过PRF(伪随机函数)生成:
python代码
master\_secret = PRF(pre\_master\_secret + ClientRandom + ServerRandom)
key\_block = PRF(master\_secret + "key expansion" + ServerRandom + ClientRandom)
四、HTTPS安全增强机制
1. 证书验证流程
检查证书链完整性
验证有效期
检查域名匹配
吊销状态检查:
CRL(证书吊销列表)
OCSP(在线证书状态协议)
OCSP Stapling(服务器提供响应)
2. TLS 1.3主要改进
1-RTT握手:简化握手流程
0-RTT模式:对近期连接可立即发送数据
移除不安全算法:仅保留前向安全加密套件
加密证书传输:增强隐私保护
五、性能优化建议
会话恢复:
Session ID缓存
Session Ticket机制
证书优化:
使用ECDSA证书
选择更短的证书链
协议优化:
启用HTTP/2 over HTTPS
开启TLS False Start
硬件加速:
AES-NI指令集
专用SSL加速卡
HTTPS通过巧妙的混合加密机制,既解决了对称加密的密钥分发问题,又避免了非对称加密的性能瓶颈,是现代Web安全的基石。理解其工作原理有助于开发者更好地调试和优化Web应用。
六:关于https证书申请:
以下是一些常用的https证书申请,需要花钱,具体流程可以去具体的网站看,有详细的流程,不一一赘述了。同时需要注意使用https时可能需要更改nginx相关代码。
阿里云
腾讯云
certbot
acme.sh
freessl.cn