图解 HTTPS:Charles 捕获 HTTPS 的原理

PS:本文适合对 HTTPS 已经有一定了解的人阅读。

前言

这篇文章我准备了很久,反复修改了很多次,仍不觉得满意,原因是:

  1. 网上虽有很多 HTTPS 相关的资料,但是质量参差不齐,而且有些地方的理解还不一致,我不知道哪个是对的。
  2. 对于 HTTPS,我很难在实践中应用它,因此,也没法从实践中确认我所理解的就是对的。

下面是我参考的资料,基本代表了我学习 HTTPS 的一个思路顺序:

  1. 关于互联网流量劫持分析及可选的解决方案 , By xrzs
  2. 密码学笔记 , By 阮一峰
  3. 对称加密算法 VS 非对称加密算法 , By loveyoung
  4. 密码技术系列 Part 1 – 对称加密 , By BigNerdCoding
  5. 如何用通俗易懂的话来解释非对称加密 , By ThreatHunter
  6. XOR 加密简介 , By 阮一峰
  7. RSA 算法原理(一) , By 阮一峰
  8. RSA 算法原理(二) , By 阮一峰
  9. 数字签名是什么? , By 阮一峰
  10. 看完还不懂 HTTPS 我直播吃翔 , By winwill2012 :star2: :star2: :star2:
  11. 关于 HTTPS,你需要知道的全部 , By rushjs
  12. 深入 HTTPS 系列一(HTTP&HTTPS) , By muice
  13. HTTPS 为什么安全 &分析 HTTPS 连接建立全过程 , By kaitoulee
  14. SSL/TLS 协议运行机制的概述 , By 阮一峰
  15. 浅谈 Charles 抓取 HTTPS 原理 , By rushjs
  16. Nodejs 创建 HTTPS 服务器 , By 张丹

既然网上的文章已经很多,我就不赘述了。凭自己的理解,我画了几张 HTTPS 的图,以求能加深记忆,最后的例子是解释 Charles 捕获 HTTPS 的原理。

图解

误区

我在学习 HTTPS 的时候,发现有几个地方特别容易掉坑里。

  1. 要想学习 HTTPS,首先应该学习基本的密码学知识 ,要理解对称加密和非对称加密的数学原理和特性,否则当看到密钥、私钥、公钥等等概念的时候很容易混乱。
  2. “公钥加密,私钥解密”,这句话是没错,但只说对了一半。公钥和私钥的区分不是以谁加密、谁解密来区分的,是以谁公开、谁不公开为区分的。另外, 公钥和私钥,都可以用来加密和解密 ,也就是说,同一对钥匙,公钥加密只能私钥解密,私钥加密只能公钥解密。那为什么我们平常不说 “私钥加密” 呢?因为公钥是公开的呀!人手一份公钥,私钥加密不跟没加密一个样吗?因此,在实践中,基本不用私钥进行加密,私钥的用途一般是签名。
  3. 证书和证书中心。人们常说:“要想进行 HTTPS 通信,就要安装证书”。这句话未免说得太笼统,我觉得, 应该刻意地区分开证书和证书中心 ,下面以 Charles 为例讲讲。

————– 完 ————–