文章目录
- 引言
- 一、HTTPS概念
- 二、HTTPS的工作原理
-
- 2.1加密和解密
-
- 1.以前的传输数据的时候是进行明文传输,这样的数据容易被黑客纂改,不安全
- 2.后面引入对称加密
- 3.再引入非对称加密
- 4.数字证书机制(HTTPS的核心防御)
-
- [4.1 什么是数字证书?](#4.1 什么是数字证书?)
- [4.2 客户端如何验证证书?](#4.2 客户端如何验证证书?)
- [4.3 数字证书如何防止中间人攻击?(重点)](#4.3 数字证书如何防止中间人攻击?(重点))
引言
在日常上网过程中,我们几乎每天都会接触到 HTTPS:无论是登录账号、在线支付,还是浏览网页,浏览器地址栏中的"小锁"似乎已经成为安全的象征。但你是否真正思考过:HTTPS 为什么是安全的?它到底解决了什么问题?
在最初的 HTTP 协议中,数据是以明文形式在网络中传输的,这意味着任何处在通信链路中的第三方,都有可能窃取甚至篡改数据。这种攻击方式被称为"中间人攻击",它并不需要入侵服务器,仅通过"拦截 + 伪装"就可以获取敏感信息,危害极大。
为了解决这一问题,HTTPS 在 HTTP 的基础上引入了 SSL/TLS 加密机制 ,结合对称加密、非对称加密以及数字证书体系,构建了一套既安全又高效的通信方案。但这套机制并非一开始就完美无缺,而是经历了从"明文传输"到"对称加密",再到"非对称加密",最终引入"证书验证"的逐步演进过程。
本文将围绕以下几个核心问题展开讲解:
- HTTPS 是如何一步步演变出来的?
- 为什么单纯使用对称加密或非对称加密都不够?
- 中间人攻击是如何发生的?
- 数字证书又是如何从根本上解决这一问题的?
通过本文,你不仅能够理解 HTTPS 的工作原理,更重要的是,能够真正看懂它背后的安全设计思想。
一、HTTPS概念
HTTPS = HTTP + S(SSL / TLS)
HTTP 是基础的超文本传输协议,用于在浏览器和服务器之间传输网页数据,但它是明文传输,不安全。
S 代表 SSL(安全套接层)或它的继任者 TLS(传输层安全协议),这是一个加密协议。
将 HTTP 与 SSL/TLS 结合,就得到了 HTTPS(HTTP over SSL/TLS),即 在 SSL/TLS 加密通道上运行的 HTTP。
二、HTTPS的工作原理
2.1加密和解密
- 对称加密
加密和解密使用同一个密钥。 - 非对称加密
加密使用一个密钥,解密使用另外一个密钥。
1.以前的传输数据的时候是进行明文传输,这样的数据容易被黑客纂改,不安全

2.后面引入对称加密

引入对称加密之后,即使数据被截获,由于黑客不知道密钥是啥,因此就无法进行解密,也就不知道请求的真实内容是啥了。
但是事情没有这么简单,服务器同一时刻是给很多客户端提供服务的,这么多客户端,每个人使用的密钥都必须是不同的(如果密钥是相同的就很容易扩散,被黑客拿到了),因此服务器就需要维护每个客户端和每个密钥之间的关联关系,这是件很麻烦的事情。

比较理想的做法是:客户端和服务器最开始进行通信的时候,就需要一方先生成唯一密钥,再通过网络传输给另一方。

但是如果直接把密钥明文传输,黑客也就能获得密钥了,此时后续的操作也就形同虚设了,因此,密钥也需要加密传输,如果对密钥再进行对称加密,总有一层是明文传输,因此对称加密这条路就走不通了,此时我们就需要用到非对称加密。
3.再引入非对称加密
服务器具有非对称的公钥S和私钥S',黑客具有非对称的公钥M和私钥M',当客户端向服务器发送请求,服务器给客户端明文出传送公钥S,中间的黑客拿到公钥S并保存好,把公钥S纂改为自己的公钥M,发送给客户端,客户端拿到公钥M以后,用M对自己的对称密钥进行加密,发给服务器,黑客用自己的私钥M'进行解密,拿到通信的对称密钥后,又用自己保存好的公钥S对密文进行加密,发送给服务器,在这个过程中,通信对称密钥就被黑客拿到了。

4.数字证书机制(HTTPS的核心防御)
在前面的分析中可以看到,即使引入了非对称加密,如果公钥在传输过程中被篡改,仍然会遭受中间人攻击。因此,问题的本质不在于加密方式,而在于如何保证公钥的真实性。
为了解决这一问题,HTTPS 引入了数字证书(Digital Certificate)机制。
4.1 什么是数字证书?
数字证书可以理解为服务器公钥的"身份证",由权威的第三方机构------CA(Certificate Authority,证书颁发机构)签发。
证书中包含:
服务器的公钥
服务器身份信息 (域名等)
证书颁发机构信息
数字签名(最关键)
作用:证明"这个公钥确实属于这个服务器"
4.2 客户端如何验证证书?
当客户端收到证书后,会进行三步校验:
① 校验有效期
判断证书是否过期
② 校验颁发机构(CA)
是否为系统信任的机构(操作系统内置)
常见机构如:DigiCert、GlobalSign
③ 校验是否被篡改(核心)
CA 用"私钥"给证书做了一个"防伪标签(签名)",客户端用"公钥"来验证这个标签有没有被改。
步骤如下:
获取 CA 的公钥,解密证书中的数字签名 → 得到摘要 hash1
对证书内容计算哈希 → 得到 hash2
比较:
相等 → 未被篡改 ✔
不相等 → 已被篡改 ❌
4.3 数字证书如何防止中间人攻击?(重点)
核心逻辑只有一句话:
攻击者无法伪造一个"被信任CA签名"的证书
具体原因:
攻击者可以替换公钥 ✔
但无法伪造 CA 的数字签名 ❌
因为没有 CA 的私钥
一旦证书被篡改:hash 校验失败,浏览器直接报错(红色警告)

学习路上一起进步,如果觉得内容不错,记得点赞支持一下,也可以关注我,后续持续分享高质量技术文章!