深入理解HTTPS原理

171 阅读6分钟

关键词:HTTPS、原理、CA证书、中间人攻击、TLS握手、加密传输

HTTPS为啥就比HTTP传输更安全,是如何做到的,底层原理是怎样的?这是一个很经典的知识点,前后端的开发者都需要搞清楚。

一、HTTPS核心原理

流程图

yuque_diagram.jpg

HTTPS 的核心工作原理:TLS 握手 + 加密传输

阶段 1:TLS 握手(协商加密参数 + 验证身份 + 交换对称密钥)

TLS 的全称是 Transport Layer Security,即 传输层安全协议;TLS 是 SSL(Secure Sockets Layer)的继任者,提供了更强的安全性和更高的效率。

1、客户端发起请求:txiejun.com 服务端接收请求,返回证书(包含非对称加密公钥,证书签名,证书内容等)

2、客服端判断证书是否合法,如果不合法,警告提示,否则生成随机数(对称加密密钥)

3、通过公钥非对称加密随机数,传输加密后的随机数给后端

4、后端通过非对称私钥解密加密后的随机数,获得对称加密密钥

阶段 2:加密传输 HTTP 数据

5、通过传入的随机数对数据进行对称加密,传递对称加密后的内容给客户端

6、客户端根据本地存储的随机数(对称加密密钥)对内容进行解密,拿到真实数据

7、通过对称加密传输所有内容

二、中间人攻击

中间人攻击,英文为Man-in-the-Middle,简称MITM。是一种网络攻击方式,攻击者在通信双方之间秘密拦截、篡改或伪造消息,使双方以为自己在直接安全通信。

流程图

1、攻击者必须先把自己放到客户端与服务器之间的网络路径上,常用的攻击手段有:

  • ARP 欺骗:伪造 ARP 消息,欺骗设备将数据发往攻击者,窃听或篡改流量。
  • 伪造 Wi-Fi 热点:创建假 Wi-Fi 热点诱导用户连接,拦截数据或窃取凭据。
  • DNS 污染:篡改 DNS 解析,误导用户访问恶意 IP 地址。
  • BGP 劫持:伪造 BGP 路由信息,重定向互联网流量到攻击者控制的网络。
  • 控制路由/交换设备:通过获取设备管理权限,操纵网络流量或配置以窃听、篡改或阻断数据。

2、向客户端呈现伪造或误签的证书,使客户端信任中间人
3、让客户端与攻击者做密钥交换(而非与真实服务器),从而解密并重建会话
4、在客户端<->中间人<->服务器之间做“解密—检查—重加密”,用于内容过滤或窃听/篡改。

如何防止中间人攻击?

1、不要随意连接公共WIFI

2、确保访问HTTPS网站

3、不要随意忽略证书不安全警告

4、使用VPN保护数据传输

5、不要打开钓鱼邮件

6、安装并及时更新杀毒软件

三、CA证书

CA全称为Certificate Authority,即证书颁发机构。CA证书证书颁发机构签发的数字证书,主要用于验证和确保网站、应用程序等通信双方身份的真实性。

1. 服务端申请数字证书

  1. 生成公私钥对:使用工具(如 OpenSSL)生成公钥和私钥。

  2. 创建证书签名请求(CSR) :包括公钥和基本信息(如域名、组织等),并用私钥签名。

  3. 提交 CSR 给 CA:选择一个证书颁发机构(如 Let's Encrypt、DigiCert),提交 CSR 申请证书。

  4. CA 验证身份并签发证书:CA 验证请求信息后,签发证书(包含公钥和 CA 签名)。

    • 生成证书内容(包括申请者公钥等)
    • 使用hash算法对证书内容进行计算获得摘要
    • CA用自己的私钥对摘要进行加密,生成数字签名
    • 颁发数字证书(包含申请者公钥,CA公钥,CA数字签名,证书内容等)
  5. 安装证书:在 Web 服务器(如 Apache、Nginx)上安装证书和中间证书。

2. 客户端验证 CA 证书

  1. 客户端收到证书链:包括中间证书。
  2. 验证证书的有效性:检查证书是否过期,未撤销。
  3. 验证证书的信任链:确认证书是否由受信任的 CA 签发,检查证书链的完整性。
  4. 域名匹配:检查证书中的域名是否与请求的域名匹配。
  5. 验证证书合法性: 客户端通过对比摘要判断是否合法。
    • 用CA公钥解密证书的CA签名 得到原始hash1
    • 对证书内容用相同hash算法计算出摘要hash2
    • 对比hash1和hash2是否相等,如果相等证书未被篡改,否则证书不可信

四、加密机制

算法

1. 对称加密

  • 说明:使用同一密钥进行加密和解密。
  • 常用算法:DES,AES,RC2
  • 优缺点:效率极高,易泄露,适合大量数据加密场景

2. 非对称加密

  • 说明:使用一对密钥(公钥加密,私钥解密)
  • 常用算法:RSA,DSA,ECDSA
  • 优缺点:安全性高,效率低,适合较小数据和安全性较高的加密场景

3. 数据指纹

  • 说明:判断数据是否被篡改
  • 常用算法:MD5,SHA1,SHA256,SHA512

2. 数据加密:防 “窃听”

HTTPS 结合非对称与对称加密,平衡安全与效率:

  • 非对称加密:仅用于 TLS 握手,交换 “预主密钥 / 临时密钥材料”,安全性高但效率低,不适合传大量数据;
  • 对称加密:用于数据传输,用 “会话密钥”(经非对称加密安全交换,不明文传输)加密,效率极高(比非对称快 100-1000 倍)。

作用: 黑客截获数据也因无会话密钥,无法解密,仅见乱码。

3. 完整性校验:防 “篡改”

核心依赖 “消息认证码(MAC)” 或 “哈希算法(如 SHA)”:

  • 客户端:对 “明文数据 + 随机数” 算 “摘要”(如 SHA-256 生成 256 位哈希值),用会话密钥加密摘要生成 MAC,附在数据后;
  • 服务器:用相同算法和密钥重算摘要,与解密后的 MAC 比对 —— 一致则数据未篡改,不一致则丢弃数据。

作用: 杜绝 “中间人篡改”(如改转账金额),篡改后摘要与原 MAC 不匹配,会被识别拒绝。

通过以上知识的整理,发现HTTPS这部分涉及到的知识点真的不简单,以上对一些细节都没有太深入的探究,知识梳理了最核心的逻辑部分。

参考:

HTTPS详解:加密机制、工作流程、CA证书与中间人攻击防护

【HTTPS】客户端证书、证书链验证

中间人攻击原理与实践

浅谈数字证书(Digital Certificate)的发放和验证原理