深入浅出 HTTPS

一、前言

本文适合对 HTTP 传输原理有一定了解,并有意进一步了解 HTTPS 传输原理的人。

关于 HTTP 原理的了解,建议阮一峰老师的文章 HTTP 协议入门

二、HTTP 和 HTTPS

HTTPS 不是一个新鲜的协议,它仍然是基于 HTTP 协议,可以把 HTTPS 协议看成是穿着防弹衣的 HTTP 协议,协议层对比如下图:

HTTP 和 HTTPS 协议层对比

基于 HTTP 协议的网络传输是明文的,对响应的内容也不加验证,这意味着只要传输内容被黑客截获,黑客就能知道传输内容,甚至能够返回一段修改后的内容给用户。这就是常说的 HTTP 劫持,一些运营商会使用这种手段往用户的网页里注入广告。

连接不安全 WiFi 后被窃取个人信息,以及被一些运营商注入广告是 HTTP 劫持的两种常见场景。所以棍子哥提醒您:不要随意连接使用陌生 WiFi 哦~

HTTP 劫持示意图

三、了解 HTTPS 传输原理前储备知识

讲解 HTTPS 传输原理前,让我们来先了解几个故事轻松一下(已了解对称加密和非对称加密的朋友可以跳过这个段落)

1. HTTP 的故事

小马读小学的时候就开始给小燕写情书,每次都是把折好的情书交给小明,由小明转交给小燕,最后小燕读到小马的情书。

这其实就是 HTTP 传输原理最简单的描述。小马代表浏览器,小明代表网络传输过程,小燕代表服务器。从这个故事很容易看出,小明可以轻而易举地偷看小马的情书。

2. HTTPS 的故事

很快,小马和小燕读初中了,他们也开始意识到情书可能会被小明偷看,于是小马想了一个办法。小马和小燕私下里协商好一套文字映射表,比如用 A 代表“我”,用 B 代表“爱”,用 C 代表“你”。当小马想在情书里写“我爱你”的时候,小马就写“ABC”,当小燕收到情书后就拿出文字映射表,把“ABC”翻译成“我爱你”。这样,即使小明偷看情书,小明也只知道情书的内容是“ABC”,并不知道真实的内容。

这就是 HTTPS 的基本原理,但过程会稍微复杂一点,接下来我们再了解几个概念做知识储备。

两种加密算法

对称加密

加密和解密使用同样秘钥的加密算法称之为对称加密。像上述小马和小燕之间使用同样的文字映射表进行的加密方式就属于对称加密。对称加密算法的优点是执行快,缺点是安全性较低,如果秘钥被第三方知道的话就泄密了。

非对称加密(又称为公开秘钥加密)

加密和解密使用不同秘钥的加密算法称之为非对称加密。非对称加密有两个秘钥——公开秘钥和私有秘钥(下文简称公钥和私钥),公钥用来加密,私钥用来解密,以公钥加密的内容只能使用私钥解密。这样的话,私钥只会让自己知道,公钥的话可以让任何人知道,保证了安全。但非对称加密的的缺点是执行慢

非对称加密的原理异常复杂,非三言两语能够解释清楚,这里大家只需要知道公钥加密只有私钥能够解密就足够了。如果有求知欲特别强的朋友硬要了解非对称加密的原理,棍子哥个建议阅读阮一峰老师的 RSA 算法原理

四、HTTPS 传输原理详解

时序图真的是个好东西,让我们先以时序图的方式瞧一瞧 HTTPS 的整体流程,然后再一一做解释:

如果你能完全看懂时序图,那么恭喜你,可以不用浪费时间往下看了,如果你对时序图心存疑问,那么我们就来一一了解时序图中的每一个步骤。

图3-1 HTTPS 传输时序图

细心的朋友可能会问:服务器的公钥、私钥从何而来?浏览器如何校验公钥的正确性?如果你有这样的疑问,说明你对 HTTP 的传输过程还是很了解的。

1. 浏览器获取公钥

对应如图的红框①区域,浏览器在整个通信的最开始会请求服务器的公钥(其实是证书,下文会说明),这里的公钥就是我们常说的 SSL 证书的一部分了。关于 SSL 证书,一般是由专门机构(CA 机构)颁发,其实也就是颁发几个文件,其中有包含私钥信息的文件和包含公钥信息的文件,私钥文件一直秘密地保存在服务器,不会公布出去,公钥文件会在这次请求中下发给浏览器。

公钥文件除了包含有公钥信息外,还有其他信息比如域名、颁发机构、有效期等等。具体大家在 Chrome 上点击任意带有绿色锁图标的网站的绿色锁图标,然后展开细节查看。

谷歌 SSL 证书示例

2. 校验证书

对应图 3-1 的绿色框区域②。图中为了简单易懂,说服务器返回的是公钥,这并不准确,服务器其实是返回了包含公钥的证书。每一个证书都包含域名信息,操作系统也维护了一个可信的证书列表。当浏览器获得服务器返回的证书后,提取证书里的域名、办法机构等信息,然后根据本地的可信证书列表判断该证书是否可信,然后才提取证书里的公钥并接着和服务器通信,否则给出警告。以 Chrome 为例,当证书不可信时,Chrome 会提示如下图所示的界面,并且在地址栏显示红色的不安全警告,当用户点击“高级 - 继续前往 xxx (不安全)”后才可以打开该网页。

不被信任的 HTTPS 网页示例

一般来说,高质量的 SSL 证书需要购买,而且价格不菲。如果对站点的要求没有那么高,也可以在一些网站上申请免费证书,比如SSL证书选购 - 腾讯云SSL For Free

3. 交换临时传输公钥

对应图 3-1 的蓝色框部分③。当浏览器信任证书并提取证书里的公钥后,会随机再生成一条临时公钥。然后浏览器用证书的公钥加密临时公钥并发送给服务器,服务器收到后用证书里私钥解密内容得到临时公钥。这这里开始进入第④步后,浏览器和服务器都知道了临时公钥的值,之后的通信,浏览器和服务器都将使用该临时公钥对传出内容进行对称加解密。

临时公钥的用途是为了加解密之后真正的传输内容,它在每次 HTTPS 的传输过程都不同,而证书里的公钥是始终保持不变的(除非更换了证书)。

4. 内容传输

对应图 3-1 的黄色框部分④。以上三步其实都处于握手阶段,到这一步 HTTPS 才真正进入内容传输阶段。这之前,浏览器和服务器已经通过非对称加密的方式交换了一个临时公钥,保证没有第三方知道这个临时公钥,之后进行内容传输的时候浏览器和服务器双方都将使用该临时公钥对称加密。之所以到传输阶段选择使用对称加密的方式是因为对称加密的方式执行快。


这就是 HTTPS 的基本原理啦,如果对您有帮助的话请动动手指转发给更多有需要的人。如果有说错的地方,还请评论留言,大家一起改进。


下期预告:webpack 实战教程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • 一、什么是HTTPS,TLS,SSL HTTPS,也称作HTTP over TLS。TLS的前身是SSL,TLS ...
    我是嘻哈大哥阅读 647评论 0 13
  • 前言 最近又开始忙碌起来了,年底了各种杂七杂八的事情开始多了起来。事情一多,几天前复习的计算机网络相关知识,怕又淡...
    gdutkyle阅读 844评论 0 1
  • 一、作用 不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。 (1)窃听风险...
    XLsn0w阅读 10,359评论 2 44
  • 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现...
    纳兰三少阅读 1,803评论 1 6
  • 那是一个充满暖意的午后,下午五点的阳光从公交车的侧窗洒进车厢。我的前座坐着一位妈妈,带着她刚从幼儿园接出来的孩子...
    3a6f9ee9dbd0阅读 300评论 0 0