为什么能看到https报文的明文?

2019-09-28  本文已影响0人  白花蛇草可乐

一、问题的提出

昨天发生了一个跟https有关的生产bug。

事后有的小伙伴表示虽然看了一些网上的资料,但是还是不太理解https通讯的全流程,我就用比较通俗的说法给他整体讲了一遍。

然后小伙伴突然问了一个很有意思的问题:既然使用https发送报文,又非对称加密,又对称加密(会话秘钥)的,反正各种加密,那为什么我按个F12还是能看到明文?这密都加到哪儿去了?

这是一个挺好的问题,说明他真的动脑子在想了。

二、网络七层协议

学习过基础网络知识的软件工程师们,应该都了解这个经典的网络七层协议(OSI模型)。

OSI模型

其中的应用层、表示层、会话层有时候会被合并起来统称“应用层”,变成五层协议。

这五层协议的分工,曾经在知乎上面看到过一个非常通俗形象的总结,借用过来:

原回答地址 作者ID:后生)

三、问题的答案

所谓的 https ,其实就是 http + SSL/TLS 两种协议的合体。

同时,http协议是应用层协议,而SSL/TLS是传输层协议。

那问题的答案就很清晰了,在你能够在浏览器上面查看网页之前,报文经过了你的传输层,SSL/TLS已经对报文进行了解密处理(快递已经开包)。

之后所以不管是在浏览器上呈现,还是你按F12查看源码,都是http协议的事情(快递里面的东西都已经到你手上了,对你而言不会再有啥秘密)。

四、多说几句

现在转行而来的软件工程师和产品设计师的比重在行业内非常高。

对于这一现象我既有正面的看法,不可避免也有负面看法,在这里暂且不提。

但是对于一些只经过了基础编程训练,而缺乏计算机基础知识(各种算法、原理等等)的软件工程师,我经常会劝他们多补补课。

这些基础知识可能在你工作的99%时间里一点作用也起不到,但是它们可以在潜移默化之间提升你能力的天花板,让你解决问题的思路更为广阔。

上一篇 下一篇

猜你喜欢

热点阅读