• HTTPS建立连接的过程


    原文链接:https://www.cnblogs.com/shiqi17/p/9756880.html

    https://www.jianshu.com/p/bd75ab32ae57

    HTTP建立连接的过程点击:HTTP三次握手、一次HTTP请求都发生了什么

    一、HTTPS

     
    HTTP是超文本传输协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定义在RFC 6101中,之后IETF对SSL 3.0进行了升级,于是出现了TLS(Transport Layer Security) 1.0,定义在RFC 2246。实际上我们现在的HTTPS都是用的TLS协议,但是由于SSL出现的时间比较早,并且依旧被现在浏览器所支持,因此SSL依然是HTTPS的代名词,但无论是TLS还是SSL都是上个世纪的事情,SSL最后一个版本是3.0,今后TLS将会继承SSL优良血统继续为我们进行加密服务。目前TLS的版本是1.2,定义在RFC 5246中,暂时还没有被广泛的使用

    • HTTPS基于HTTP使用 SSL/TLS加密。他们都是基于TCP/IP的
       
    HTTPS的连接建立流程

    HTTPS为了兼顾安全与效率,同时使用了对称加密和非对称加密。在传输的过程中会涉及到三个密钥:

    • 服务器端的公钥和私钥,用来进行非对称加密

    • 客户端生成的随机密钥,用来进行对称加密

     
    图片
    如上图,HTTPS连接过程大致可分为八步:
    • 1、客户端访问HTTPS连接。

    客户端会把安全协议版本号、客户端支持的加密算法列表、随机数C发给服务端。

    • 2、服务端发送证书给客户端

    服务端接收密钥算法配件后,会和自己支持的加密算法列表进行比对,如果不符合,则断开连接。否则,服务端会在该算法列表中,选择一种对称算法(如AES)、一种公钥算法(如具有特定秘钥长度的RSA)和一种MAC算法发给客户端。

    服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。

    在发送加密算法的同时还会把数字证书和随机数S发送给客户端

    • 3、客户端验证server证书

    会对server公钥进行检查,验证其合法性,如果发现发现公钥有问题,那么HTTPS传输就无法继续。

    • 4、客户端组装会话秘钥

    如果公钥合格,那么客户端会用服务器公钥来生成一个前主秘钥(Pre-Master Secret,PMS),并通过该前主秘钥和随机数C、S来组装成会话秘钥

    • 5、客户端将前主秘钥加密发送给服务端

    是通过服务端的公钥来对前主秘钥进行非对称加密,发送给服务端

    • 6、服务端通过私钥解密得到前主秘钥

    服务端接收到加密信息后,用私钥解密得到主秘钥。

    • 7、服务端组装会话秘钥

    服务端通过前主秘钥和随机数C、S来组装会话秘钥。

    至此,服务端和客户端都已经知道了用于此次会话的主秘钥。

    • 8、数据传输

    客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。

    同理,服务端收到客户端发送来的密文,用服务端密钥对其进行对称解密,得到客户端发送的数据。

  • 相关阅读:
    LeetCode Array Easy 1. Two Sum
    关于VS2015 发布.net mvc 网站失败的问题
    2016计蒜之道复赛 百度地图的实时路况 floyd+cdq分治
    2016计蒜之道复赛 菜鸟物流的运输网络 网络流EK
    HDU5715 XOR 游戏 二分+字典树+dp
    HDU5697 刷题计划 dp+最小乘积生成树
    codeforces 687D Dividing Kingdom II 带权并查集(dsu)
    codeforces 687C
    codeforces 687B
    HDU 5693 D Game 区间dp
  • 原文地址:https://www.cnblogs.com/fswhq/p/11794931.html
Copyright © 2020-2023  润新知