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

一、问题的提出

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

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

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

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

二、网络七层协议

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

OSI模型

其中的应用层、表示层、会话层有时候也会合并起来简单地表示为“应用层”,变成五层协议。

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

  • 买东西时候要封装打包(应用层)
  • 打包后要在包裹上贴快递单(传输层)
  • 在快递单上要写源地址目的地址(网络层)
  • 让快递小哥来取件(数据链路层)
  • 快递小哥骑车送件到收货人(物理层)

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

三、问题的答案

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

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

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

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

四、多说几句

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

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

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

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值