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 🌟 🌟 🌟
  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 的原理。

图解

image1

image2

image3

image4

image5

image

image7

误区

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

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

-------------- 完 --------------

原创文章转载请注明:

转载自AlloyTeam:http://www.alloyteam.com/2019/07/13821/

发表评论