深入理解 HTTP 与 HTTPS:区别以及 HTTPS 加密原理

目录

[一、HTTP 与 HTTPS 的基本概念](#一、HTTP 与 HTTPS 的基本概念)

[二、HTTP 与 HTTPS 的核心区别](#二、HTTP 与 HTTPS 的核心区别)

[三、为什么需要 HTTPS?](#三、为什么需要 HTTPS?)

[四、HTTPS 的加密通信原理(核心)](#四、HTTPS 的加密通信原理(核心))

[1. 客户端发起 HTTPS 请求](#1. 客户端发起 HTTPS 请求)

[2. 服务端返回 SSL/TLS 证书](#2. 服务端返回 SSL/TLS 证书)

[3. 客户端验证证书](#3. 客户端验证证书)

[4. 客户端生成对称密钥并用公钥加密](#4. 客户端生成对称密钥并用公钥加密)

[5. 服务端用私钥解密获取对称密钥](#5. 服务端用私钥解密获取对称密钥)

[6. 双方使用对称密钥加密通信](#6. 双方使用对称密钥加密通信)

[五、为什么 HTTPS 既用非对称又用对称加密?](#五、为什么 HTTPS 既用非对称又用对称加密?)

[六、总结:HTTP 与 HTTPS 的本质区别](#六、总结:HTTP 与 HTTPS 的本质区别)


一、HTTP 与 HTTPS 的基本概念

  • HTTP(HyperText Transfer Protocol)​ :超文本传输协议,是 Web 应用中最基础的通信协议,运行在 TCP 协议之上,默认端口 80 。它以 明文方式传输数据 ,不提供任何加密或身份验证机制。
  • HTTPS(HTTP Secure)​ :在 HTTP 的基础上增加了 SSL/TLS 加密层 ,全称为 HTTP over TLS/SSL ,运行在 TCP 协议之上,默认端口 443 。它通过加密通信内容,解决了 HTTP 的安全缺陷。

二、HTTP 与 HTTPS 的核心区别

对比维度 HTTP HTTPS
协议基础 应用层协议,明文传输 HTTP + SSL/TLS,加密传输
端口 80 443
安全性 不安全,数据容易被窃听、篡改 安全,支持加密、身份验证与数据完整性
数据传输 明文,容易被中间人攻击 加密传输,防止窃听与篡改
证书机制 需要 SSL/TLS 数字证书,通常由 CA 签发
SEO 与浏览器支持 逐渐被标记为"不安全" 被浏览器与搜索引擎优先推荐,有利于 SEO
适用场景 静态页面、内部系统等非敏感场景 登录、支付、用户数据传输等安全敏感场景

核心结论:​HTTPS 是 HTTP 的安全版本,解决了数据传输的安全性问题,是现代 Web 应用的标配。​


三、为什么需要 HTTPS?

在 HTTP 协议下,​浏览器与服务器之间的所有通信都是明文的,这意味着:

  1. 数据可被窃听 :中间人可以监听网络流量,获取用户名、密码、Cookie 等敏感信息。
  2. 数据可被篡改 :攻击者可以修改传输内容,比如将支付金额篡改,或将脚本注入页面。
  3. 身份无法验证 :用户无法确认当前访问的服务器是否为真正的服务提供者,存在被冒充的风险。

HTTPS 通过加密、身份验证与数据完整性校验,从根本上解决了上述问题。​


四、HTTPS 的加密通信原理(核心)

HTTPS 的安全性来源于 ​SSL/TLS 协议 ,其核心是:​使用非对称加密安全地传递一个对称密钥,之后使用对称加密保护通信内容。下面是 HTTPS 建立连接的主要流程:

1. 客户端发起 HTTPS 请求

用户通过浏览器访问 https://example.com,客户端向服务器发起 HTTPS 请求,默认使用 443 端口。


2. 服务端返回 SSL/TLS 证书

服务端收到请求后,返回自身的 ​SSL 数字证书,该证书包括:

  • 服务器公钥
  • 证书持有者信息(如域名)
  • 证书有效期
  • CA(Certificate Authority,证书颁发机构)​ 签发的数字签名

该证书用于证明"我是合法的服务端,不是中间人冒充的"。


3. 客户端验证证书

客户端接收到证书后,会进行如下验证:

  • 证书是否由受信任的 CA 签发
  • 证书是否过期
  • 证书上的域名是否与当前访问的域名一致
  • 证书签名是否合法

如果验证失败,浏览器会提示"连接不安全"或"证书无效"。


4. 客户端生成对称密钥并用公钥加密

验证通过后,客户端会生成一个随机的对称密钥(会话密钥)​ ,用于后续通信内容的加密。然后,客户端使用服务端证书中的 ​公钥加密该对称密钥,并将加密后的密钥发送给服务端。

为什么用公钥加密?因为只有服务端拥有对应的私钥,可以解开这个对称密钥,确保传输安全。


5. 服务端用私钥解密获取对称密钥

服务端收到加密的对称密钥后,使用自己的 ​私钥解密,得到客户端生成的对称密钥。

至此,客户端和服务端都持有了相同的对称密钥,且该密钥是通过安全方式传递的。


6. 双方使用对称密钥加密通信

接下来,客户端与服务端之间的所有数据传输(如 HTTP 请求与响应),都使用这个 ​对称密钥进行加密与解密。由于对称加密效率高,适合大数据量的加密传输。


五、为什么 HTTPS 既用非对称又用对称加密?

这是 HTTPS 设计的精华所在:

加密类型 用途 特点 为什么用在这里?
非对称加密(如 RSA)​ 安全地传递对称密钥 安全性高,但速度慢 用来加密"对称密钥",确保密钥传输不被窃取
对称加密(如 AES)​ 加密实际通信内容 速度快,适合大数据量 双方使用同一个密钥加密数据,效率高

总结:​非对称加密用于安全地协商出一个密钥,对称加密用于高效地加密通信内容。​


六、总结:HTTP 与 HTTPS 的本质区别

项目 HTTP HTTPS
传输方式 明文传输,不安全 加密传输,安全可靠
协议层 应用层协议 HTTP + SSL/TLS 协议
端口 80 443
证书 需要权威机构签发的 SSL 证书
适用场景 非敏感数据展示 登录、支付、用户信息等敏感操作
用户信任 浏览器提示"不安全" 浏览器显示安全锁,增强用户信任

HTTPS 已不再是"可选项",而是"必选项"​。无论是从用户隐私、数据安全,还是从 SEO、浏览器兼容性、企业合规等角度考虑,部署 HTTPS 都是现代 Web 服务的基石。

相关推荐
雪域迷影2 小时前
C#中通过get请求获取api.open-meteo.com网站的天气数据
开发语言·http·c#·get
ozawacai6 小时前
详细了解TLS、HTTPS、SSL原理
计算机网络·https·ssl
2501_915918416 小时前
HTTP抓包工具推荐,Fiddler使用教程、代理设置与调试技巧详解(含HTTPS配置与实战案例)
http·ios·小程序·https·fiddler·uni-app·webview
Pocker_Spades_A8 小时前
Python快速入门专业版(五十四):爬虫基石:HTTP协议全解析(从请求到响应,附Socket模拟请求)
爬虫·python·http
天玺-vains10 小时前
借助Github Action实现通过 HTTP 请求触发邮件通知
网络协议·http·github
国服第二切图仔12 小时前
Rust开发实战之使用 Reqwest 实现 HTTP 客户端请求
开发语言·http·rust
利刃大大12 小时前
【高并发服务器:HTTP应用】十四、Util工具类的设计与实现
服务器·http·高并发·项目·cpp
2501_9159214314 小时前
iOS 虚拟位置设置实战,多工具协同打造精准调试与场景模拟环境
android·ios·小程序·https·uni-app·iphone·webview
午安~婉16 小时前
浏览器与网络
前端·javascript·网络·http·浏览器
无聊的小坏坏16 小时前
基于 TCP 线程池服务器封装 HTTP 服务器:从协议解析到适配落地
服务器·tcp/ip·http