HTTP 与 HTTPS 的区别详解
2024/8/12大约 6 分钟
HTTP 与 HTTPS 的区别详解
什么是 HTTP
HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从 Web 服务器传输超文本到本地浏览器的传输协议。
什么是 HTTPS
HTTPS(HyperText Transfer Protocol Secure,安全超文本传输协议)是 HTTP 的安全版本,在 HTTP 下加入 SSL/TLS 协议层,为数据传输提供安全保障。
核心区别对比
1. 安全性
HTTP:
- 明文传输,数据未加密
- 容易被窃听、篡改和伪造
- 无法验证服务器身份
HTTPS:
- 加密传输,数据经过 SSL/TLS 加密
- 防止数据被窃听和篡改
- 通过数字证书验证服务器身份
2. 端口号
HTTP:
- 默认使用 80 端口
HTTPS:
- 默认使用 443 端口
3. 协议栈
HTTP 协议栈:
应用层 │ HTTP
传输层 │ TCP
网络层 │ IP
数据链路层 │ EthernetHTTPS 协议栈:
应用层 │ HTTP
安全层 │ SSL/TLS
传输层 │ TCP
网络层 │ IP
数据链路层 │ EthernetSSL/TLS 工作原理
1. 握手过程
sequenceDiagram
participant Client as 客户端
participant Server as 服务器
Client->>Server: 1. Client Hello
Server->>Client: 2. Server Hello + 证书
Client->>Server: 3. 验证证书
Client->>Server: 4. 生成预主密钥
Server->>Client: 5. 生成会话密钥
Client->>Server: 6. 开始加密通信2. 详细步骤
客户端发起请求
- 发送支持的 SSL/TLS 版本
- 发送支持的加密套件列表
- 发送随机数
服务器响应
- 选择 SSL/TLS 版本和加密套件
- 发送数字证书
- 发送服务器随机数
证书验证
- 客户端验证证书有效性
- 检查证书链和签名
- 验证域名匹配
密钥交换
- 生成预主密钥
- 使用服务器公钥加密传输
- 双方生成相同的会话密钥
开始加密通信
- 使用对称加密进行数据传输
- 使用 MAC 确保数据完整性
数字证书详解
证书内容
证书版本
序列号
签名算法
颁发者信息
有效期
主体信息(域名)
公钥信息
扩展信息
数字签名证书类型
1. DV 证书(Domain Validation)
- 仅验证域名所有权
- 申请快速,价格便宜
- 适合个人网站和博客
2. OV 证书(Organization Validation)
- 验证组织身份和域名所有权
- 提供组织信息
- 适合企业网站
3. EV 证书(Extended Validation)
- 最严格的验证流程
- 浏览器地址栏显示绿色标识
- 适合银行、电商等高安全要求网站
证书链验证
根证书 (Root CA)
│
├── 中间证书 (Intermediate CA)
│ │
│ └── 网站证书 (End Entity)
│
└── 另一个中间证书
│
└── 其他网站证书加密算法
对称加密
- 算法:AES-128、AES-256、ChaCha20
- 特点:加密解密使用相同密钥,速度快
- 用途:数据传输加密
非对称加密
- 算法:RSA、ECDSA、Ed25519
- 特点:公钥加密,私钥解密,安全性高
- 用途:密钥交换、数字签名
哈希算法
- 算法:SHA-256、SHA-384、SHA-512
- 特点:单向函数,固定长度输出
- 用途:数据完整性验证
性能影响
HTTPS 的性能开销
1. 握手延迟
HTTP: TCP 握手 (1 RTT)
HTTPS: TCP 握手 (1 RTT) + TLS 握手 (1-2 RTT)2. 加密解密开销
- CPU 资源消耗增加 1-5%
- 现代硬件影响微乎其微
3. 内存使用
- 每个连接额外使用 2-10KB 内存
- 缓存 SSL Session 可以减少开销
性能优化策略
1. 启用 HTTP/2
server {
listen 443 ssl http2;
# 其他配置...
}2. 使用 OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/ca-bundle.crt;3. 优化密码套件
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;4. SSL Session 复用
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;浏览器安全指示
地址栏显示
HTTP:
- 显示 "不安全" 标识
- 部分浏览器标记为红色
HTTPS:
- 显示锁形图标
- EV 证书显示绿色标识
- 显示证书信息
浏览器安全策略
1. HSTS(HTTP Strict Transport Security)
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload2. 混合内容检测
- 阻止 HTTPS 页面加载 HTTP 资源
- 防止中间人攻击
3. 证书透明度(CT)
- 记录所有颁发的证书
- 防止恶意证书
实际应用场景
必须使用 HTTPS 的场景
用户登录和注册
- 传输用户名和密码
- 防止凭据被窃取
支付和交易
- 信用卡信息传输
- 银行转账操作
API 接口
- 防止 API 密钥泄露
- 保护敏感数据传输
表单提交
- 个人信息收集
- 文件上传
HTTPS 配置示例
Nginx 配置:
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location / {
root /var/www/html;
index index.html;
}
}SEO 和用户体验影响
SEO 优势
搜索引擎排名提升
- Google 将 HTTPS 作为排名因素
- 优先显示 HTTPS 网站
用户信任度
- 安全标识增强用户信心
- 减少跳出率
Referrer 信息保护
- HTTPS 到 HTTP 的链接不传递 Referrer
- 保护用户隐私
迁移注意事项
301 重定向
- 将所有 HTTP 流量重定向到 HTTPS
- 保持 SEO 权重
更新内部链接
- 修改所有内部链接为 HTTPS
- 更新 sitemap.xml
第三方资源
- 确保所有外部资源支持 HTTPS
- 避免混合内容警告
成本考虑
证书成本
免费证书:
- Let's Encrypt(3个月有效期)
- 适合个人和小型网站
付费证书:
- DV 证书:$10-50/年
- OV 证书:$50-200/年
- EV 证书:$200-1000/年
维护成本
自动化续期
- 使用 certbot 自动续期
- 监控证书过期时间
性能监控
- 监控 SSL 握手时间
- 优化服务器配置
未来发展趋势
1. TLS 1.3
- 减少握手往返次数
- 增强安全性
- 提升性能
2. QUIC 协议
- 基于 UDP 的传输协议
- 集成 TLS 1.3
- 减少连接延迟
3. 证书透明度
- 强制证书记录
- 提高透明度
- 防止恶意证书
总结
HTTP 和 HTTPS 的主要区别在于安全性:
| 特性 | HTTP | HTTPS |
|---|---|---|
| 安全性 | 明文传输,不安全 | 加密传输,安全 |
| 端口 | 80 | 443 |
| 速度 | 稍快 | 稍慢(差异很小) |
| SEO | 正常 | 有优势 |
| 成本 | 无 | 证书费用 |
| 用户信任 | 低 | 高 |
在当今互联网环境下,HTTPS 已经成为标准配置。不仅是出于安全考虑,搜索引擎优化和用户体验的提升也使得 HTTPS 成为必需品。建议所有网站都应该部署 HTTPS,以确保数据安全和用户信任。
