在学习计算机网络或者参加面试时,HTTP 和 HTTPS 的区别几乎是一个经常被问到的问题。
很多人平时访问网站时,只知道浏览器地址栏中有 http 和 https 两种形式,却不了解它们背后的通信原理。
实际上,HTTP 和 HTTPS 最大的区别并不是多了一个字母 S,而是在 HTTP 的基础上增加了安全机制,通过 TLS 协议实现数据加密、身份认证以及数据完整性保护。
本文将从 HTTP 和 HTTPS 的基本概念、工作原理、安全机制以及 HTTPS 握手过程几个方面进行介绍。
HTTP(HyperText Transfer Protocol,超文本传输协议)是一种应用层协议,也是互联网中使用最广泛的数据传输协议。
HTTP 最初设计的目的,是为了实现客户端和服务器之间 HTML 页面资源的传输。
简单来说:
例如用户访问:
http://example.com浏览器会向服务器发送 HTTP 请求:
GET / HTTP/1.1
Host: example.com服务器处理请求后返回网页内容。
HTTP 工作流程
HTTP 通常基于 TCP 协议进行通信,默认端口为:
80一次完整的 HTTP 请求大致包括以下几个步骤:
(1)建立 TCP 连接
客户端首先与服务器建立 TCP 连接。
TCP 三次握手完成后,客户端和服务器之间建立可靠的数据传输通道。
(2)客户端发送 HTTP 请求
客户端向服务器发送请求报文。
请求内容通常包括:
例如:
GET /index.html HTTP/1.1
Host: example.com(3)服务器返回 HTTP 响应
服务器收到请求后,会返回 HTTP 响应。
响应内容包括:
常见状态码:
状态码 | 说明 |
|---|---|
200 | 请求成功 |
301 | 永久重定向 |
302 | 临时重定向 |
404 | 资源不存在 |
500 | 服务器内部错误 |
HTTPS(HyperText Transfer Protocol Secure)可以理解为 HTTP 的安全版本。
它并不是一种新的协议,而是在 HTTP 与 TCP 之间增加了 TLS/SSL 安全层。
HTTPS 通过 TLS 协议实现:
HTTPS 默认使用端口:
443HTTP 最大的问题是:
数据以明文形式传输。
例如用户登录网站时:
用户名:admin
密码:123456如果攻击者通过网络监听方式获取数据,就可能直接读取用户信息。
而 HTTPS 通过 TLS 加密通信,使传输的数据无法被第三方直接获取。
HTTPS 主要提供以下三个方面的安全保障:
HTTPS 会对通信数据进行加密。
即使攻击者截获数据包,也无法直接解析其中的内容。
HTTPS 通常采用混合加密方式:
这样既保证安全,又提高传输效率。
HTTPS 可以检测数据在传输过程中是否被修改。
例如:
用户请求:
下载文件A攻击者中途修改:
文件A → 恶意文件TLS 会通过校验机制发现数据异常,从而避免客户端接收被篡改的数据。
HTTPS 使用数字证书验证服务器身份。
服务器需要向 CA(Certificate Authority,证书颁发机构)申请数字证书。
证书中包含:
客户端收到证书后,会验证:
确认服务器身份后,才建立安全连接。
HTTP 和 HTTPS 的主要区别如下:
对比 | HTTP | HTTPS |
|---|---|---|
安全性 | 明文传输 | 加密传输 |
端口 | 80 | 443 |
证书 | 不需要 | 需要 SSL/TLS 证书 |
身份认证 | 不支持 | 支持 |
数据完整性 | 无法保证 | 可以保证 |
协议结构 | HTTP | HTTP + TLS |
具体来说:
HTTP 不需要任何证书即可访问。
而 HTTPS 网站必须配置 SSL/TLS 证书,用于证明服务器身份。
证书可以通过 CA 机构申请,现在很多机构提供免费的 HTTPS 证书。
HTTP 请求和响应内容不会进行加密。
HTTPS 使用 TLS 加密数据,即使数据被截获,也无法直接读取。
HTTP:
80HTTPS:
443浏览器访问 HTTPS 网站时,会默认连接服务器的 443 端口。
HTTPS 建立连接时,需要先完成 TLS 握手。
简单来说:
客户端和服务器需要先协商:
之后才能进行数据传输。
1. 客户端发送 Client Hello
客户端向服务器发送:
告诉服务器:
自己支持哪些加密方式。
2. 服务端返回 Server Hello
服务器返回:
3. 客户端验证服务器证书
客户端收到证书后,会验证:
如果验证失败,浏览器会提示证书错误。
4. 协商通信密钥
客户端生成一个随机密钥。
然后使用服务器证书中的公钥进行加密,并发送给服务器。
服务器收到后,通过自己的私钥解密,获得通信密钥。
之后双方使用该密钥进行加密通信。
5. 开始安全通信
TLS 握手完成后:
客户端和服务器使用对称加密算法传输数据。
此后的 HTTP 数据都会经过加密处理。
HTTPS 并不是一直使用非对称加密。
原因是:
非对称加密
特点:
优点:
缺点:
常见算法:
对称加密
特点:
优点:
缺点:
常见算法:
因此 HTTPS 采用:
非对称加密交换密钥
+
对称加密传输数据的方式。
既保证了密钥交换安全,又保证了数据传输效率。
HTTPS 可以防止数据被窃取和篡改。
对于:
等场景非常重要。
通过数字证书,可以确认访问的网站是真实服务器,而不是被攻击者伪造的网站。
浏览器会对 HTTP 网站显示“不安全”提示。
HTTPS 可以减少用户访问时的安全顾虑。
虽然 HTTPS 提供了更高安全性,但也存在一些不足。
TLS 加密和解密需要消耗服务器 CPU 资源。
不过随着硬件性能提升以及 TLS 协议优化,目前影响已经较小。
HTTPS 需要:
相比 HTTP 配置更加复杂。
HTTPS 建立连接时需要额外进行 TLS 握手,因此第一次连接会比 HTTP 多一些通信步骤。
HTTP 和 HTTPS 最大的区别在于安全性。
HTTP:
HTTPS:
随着互联网的发展,HTTPS 已经成为网站部署的基本要求。
无论是个人博客、企业网站还是电商平台,都应该优先使用 HTTPS 来保护用户数据和提升网站安全性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。