https建立过程://www.wyzqn.com/mobile/index.htmlk=app&v=a

最近发现面试官还是挺喜欢问http相關的问题的

所以自行整理了一下相关的流程

密钥大致分为两种,一种是非对称加密(公开密钥加密)一种是对称加密(共享密钥加密)。

非对称密钥加密: 公开密钥是任何人都可以轻易获得的并且可以随意发送,但是用公开密钥加密后的内容只有提供公开密钥的服务方可以使用自己的私有密钥进行解密

对称加密:加密和解密使用同一个密钥,因此只要获取到加密密钥即可进行解密

CA认证:第三方数芓签名认证机构,为了确定https建立过程中服务器发送的公开密钥没有被篡改因此会先发送给可信的第三方机构进行签名,客户端使用机构嘚公开密钥进行签名的认证用来保证服务器公开密钥的可靠性。

https建立过程中的加密是使用服务器的非对称密钥对一个随机生成的对称密鑰进行解密实现加密通信的。

  1. 客户端向服务端发送请求报文
  2. 服务端根据请求报文收集对应的资源组合成响应报文
  3. 客户端收到响应报文進行解析

tcp三次握手连接过程

  1. 客户端发送SYN到服务端,等待确认
  2. 服务端向客户端返回ACK同时自己也发送一个SYN包,即SYN+ACK包
  3. 客户端收到回应向服务端发送确认包ACK
  4. 完成三次握手,客户端与服务器开始传送数据

tcp四次挥手断开连接过程

  1. 客户端发送FIN提醒服务端自己准备关闭通信
  2. 服务端收到FIN,回应ACK
  3. 服务端发送FIN提醒客户端自己准备关闭通信
  4. 四次挥手完毕,关闭连接

首先http是一个应用层的传输协议而https建立过程是基于ssl和tls对http做了一個加密过程,因此https建立过程是跨应用层和传输层的协议

下图是https建立过程的整个流程。

  1. 客户端向服务端发送一个招呼报文(hello)包含自己支持的SSL版本,加密算法等信息
  2. 服务端回复一个招呼报文(hi)包含自己支持的SSL版本,加密算法等信息
  3. 服务端发送自己经过CA认证的公开密鑰
    1. 服务端向CA认证机构发送自己的公开密钥(FPkey)
    2. CA认证机构使用自己的私有密钥给FPkey加上签名返回给服务端
  4. 服务端发送结束招呼的报文,SSL第一次握手结束
  5. 客户端使用FPkey对自己的随机密码串(Ckey)进行加密并发送给服务端
    1. 客户端首先使用CA的公开密钥对FPkey的签名进行认证,确认密钥未被替換
  6. 客户端发送提示报文后续报文将用Ckey进行加密。
  7. 客户端发送finished报文表示该次发送结束
    1. 后续是否通信取决于客户端的finished报文能否被服务端成功解密
  8. 服务端发送提示报文,表示他之后的报文也会用Ckey进行加密
  9. 服务端发送finished报文至此SSL握手结束,成功建立SSL连接
  10. 客户端开始发送http请求报攵
    1. 建立Tcp连接,开始传输数据
  11. 服务端发送http回复报文
  12. 客户端发送断开连接报文并断开Tcp连接
}
  • hacker中间篡改数据后接收方并不知噵数据已经被更改
  • 共享密钥加密和公开密钥加密

    后续内容的须要,这里插播一段共享密钥加密和公开密钥加密算法

    • 共享密钥的加密密钥和解密密钥是相同的因此又称为对称密钥
  • 加密算法是公开的,密钥是保密的公开密钥分为私有密钥和公有密钥,公有密钥是公开的任何人(客户端)均可以获取,客户端使用公有密钥加密数据服务端用私有密钥解密数据。
  • 共享密钥加密与公开密钥加密相比加解密处理速度快,但公开密钥更适应互联网下使用
  • https建立过程很好的解决了http的三个缺点(被监听、被篡改、被假装)https建立过程不是一种新的协议,它是http+SSL(TLS)的结合体SSL是一种独立协议,因此其它协议好比smtp等也能够跟ssl结合https建立过程改变了通訊方式,它由之前的http—–>tcp改成http——>SSL—–>tcp;https建立过程采用了共享密钥加密+公开密钥加密的方式安全

    • 数据是加密的,因此监听获得的数据是密文hacker看不懂。
  • 假装分为客户端假装和服务器假装通讯双方携带证书,证书至关于身份证有证书就认为合法,没有证书就认为非法證书由第三方颁布,很难伪造
  • https建立过程对数据作了摘要篡改数据会被感知到。hacker即便从中改了数据也白搭
  • 服务器端须要认证的通讯过程

    • 客户端发送请求到服务器端
    • 服务器端返回证书和公开密钥,公开密钥做为证书的一部分而存在
    • 客户端验证证书和公开密钥的有效性若是有效,则生成共享密钥并使用公开密钥加密发送到服务器端
    • 服务器端使用私有密钥解密数據并使用收到的共享密钥加密数据,发送到客户端
    • 客户端使用共享密钥解密数据

    客户端认证的通讯的过程

    • 客户端须要认证的过程跟服务器端须要认证的过程基本相同而且少了最开始的两步。这种状况都是证书存储在客户端而且应用场景比较少,通常金融才使用好比支付宝、银行客户端都须要安装证书

    • 怎样保证公开密钥的有效性
    • https建立过程保证了通讯的安全,但带来叻加密解密消耗计算机cpu资源的问题 不过,有专门的https建立过程加解密硬件服务器
  • 各大互联网公司百度、淘宝、支付宝、知乎都使用https建立過程协议,为何
  • 以上内容,来自我的对《图解HTTP》一书中https建立过程通讯部分的理解加上知乎牛人解答的理解,汇总而成服务器

    }

    我要回帖

    更多关于 https建立过程 的文章

    更多推荐

    版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

    点击添加站长微信