面试官问 HTTPS 是怎么从 HTTP 转过来的,我有点懵

这段时间毕竟也是 “金九银十” 的面试的黄金季节 , 阿粉当然也想去面试 , 但是因为自身受限 , 所以只能采访一下出去面试的同学们都问了什么内容 , 其中有一个 , 阿粉觉得有必要给大家分享一下 , 就是问关于 HTTP 的内容 。
HTTPHTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议 。HTTP 是基于 TCP/IP 协议通信协议来传递数据(html 文件、图片文件、查询结果等) 。它不涉及数据包(packet)传输 , 主要规定了客户端和服务器之间的通信格式 , 默认使用80端口 。
这其实就是百度百科里面的精简化的内容 , 虽然说不上太细致 , 但是已经算是对HTTP做了一个大概的描述 , 我们接下来就从以下的几个方面来看一下这个HTTP吧 。
我们从这里就不再多解释 HTTP报文 和 主体 这些内容了 , 阿粉之前也是完整的给大家解释过了 , 包括了 HTTP 的进化历史 , 阿粉今天我们来讲讲 HTTP 和 HTTPS 的关系 。
HTTP缺点众所周知 , HTTP 的优点那可是一大堆:

  1. 简单、灵活、易于扩展
  2. 应用广泛、环境成熟
  3. 无状态 (不需要额外的资源来记录状态信息)
但是 HTTP 的缺点也是非常的显著 , 为什么这么说 , HTTP 使用的是明文的方式进行传输 , 虽然方便了我们的调试 , 但是信息会被暴露出来 , 每一个环节没有隐私可言 。
而且 HTTP 在我们的认知当中 , 他就是一个不安全的 , 第一个原因是上面说的明文 , 还有就是 HTTP 不验证通信双方的身份 , 所以对方的身份有可能伪装 , 就像某些公共场所的那些 公共WIFI  , 还有就是 HTTP 不能验证报文的完整性 , 所以报文也是有可能被篡改的 。
基于这些内容 , 所以我们很多时候对 HTTP 的选择都比较慎重 , 不然你传输内容的时候 , 别人用抓包工具就很容易的能够分析出你想要传递的内容 。
这时候我们就想到了一个事情 , 加密处理一下不就好了?
对 , 完全没问题 , HTTP 没有加密的机制 , 但是我们可以想办法处理 , 这个办法就是:
SSL 或者 TLS
SSL: 安全套接层
TLS:安全层传输协议
当他们组合使用的时候 , 就能够加密 HTTP 的通信的内容了 , 这时候就能在这条线路上进行通信 , 而通过 SSL组合使用后的 HTTP 被称为 HTTPS 或者称之为 HTTP overSSL 。
HTTPS大白话说一下 , HTTP 在加上加密处理和认证以及完整性保护之后就是 HTTPS 。
分辨 HTTPS 最简单的方法就是 , 你在浏览器访问的时候 , 能够看到一个小锁的标识 。
面试官问 HTTPS 是怎么从 HTTP 转过来的,我有点懵

文章插图
 
现在百分之90以上的网站不都是使用的 HTTPS 么 , 
我们使用抓包工具来看一下 HTTPS 的传输内容试试 。
面试官问 HTTPS 是怎么从 HTTP 转过来的,我有点懵

文章插图
 
我们从中看到了TLS 的版本 , 还有阿粉没有截图上的随机数 。
这时候我们就得来完整的分析 HTTPS 的安全通信机制了 。来看个图看一下 然后我们再拿我们的抓包工具来进行分析 。
面试官问 HTTPS 是怎么从 HTTP 转过来的,我有点懵

文章插图
 
上面这是 HTTPS 的安全通信的机制 , 我们分别来看看都干了什么 。
第一步:Client Hello
客户端通过 发送 Client Hello 报文开始 SSL/TSL 通信 。其中包含了 SSL/TSL 的版本 , 所使用的加密的方法等一系列的内容 。
第二步:Server Hello
服务端根据客户端发送的支持的 SSL/TLS 协议版本 , 和自己的比较确定使用的 SSL/TLS 协议版本 。缺点假面算法等内容 。
第三步:服务器发送 Certificate 报文 , 报文中包含了公开密钥证书 。
证书的目的实际上就是保证标识的身份 , 证书一般采用X.509标准 。
第四步:Server Key Exchange
服务器发送 Server Hello Done 报文请求客户端 , 第一阶段的 SSL/TSL 握手协商部分结束 。
也有很多人习惯的称第四步是 Server Hello Done 实际上当我们抓包的时候 , 发现他们是在一次请求中的 , 我们一会抓包看一下试试 。Server Hello Done 实际上就是相当于我给你说我这边发完毕了 。


推荐阅读