美文网首页
HTTPS连接过程

HTTPS连接过程

作者: RobinZhao | 来源:发表于2019-04-11 19:33 被阅读0次

HTTPS(Hyper Text Transfer Protocol Secure),是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上进行传输的。HTTPS协议是在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议。所以,研究HTTPS协议原理,最终就是研究SSL/TLS协议。

运行过程

我们都知道HTTPS在保证数据安全传输上使用了加密算法,但是具体是如何加密的,或许许多人和我一样也是云里雾里。

实际上SSL/TLS协议的基本思路是非对称加密和对称加密结合来传输数据,一言以弊之,HTTPS是通过一次非对称加密算法(如RSA算法)进行了协商密钥的生成与交换,然后在后续通信过程中就使用协商密钥进行对称加密通信,之所以要使用这两种加密方式的原因在于非对称加密计算量较大,如果一直使用非对称加密来传输数据的话,会影响效率。

运行过程盗用巨人的图,可以表示如下

1.HTTPS请求

这个步骤是整个通信过程中的第一步,首先,客户端(通常是浏览器)先向服务器发出加密通信的请求,在这一步中,客户端主要向服务器提供以下信息:

  • 支持的协议版本,比如TLS 1.0版
  • 一个客户端生成的随机数RandomC,稍后用于生成“协商密钥”。
  • 支持的加密方法,比如RSA公钥加密。
  • 支持的压缩方法。

2.服务器响应

服务器收到客户端请求后,向客户端发出回应,服务器的回应一般包含以下内容:

  • 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
  • 一个服务器生成的随机数RandomS,稍后用于生成“协商密钥”。
  • 从客户端支持的加密方法中选择一个作为确认要使用的加密方法,比如RSA公钥加密。
  • 服务器证书。 这个服务器证书就是表明服务器身份的东西,其中也包含了非对称加密中需要使用的公钥。

3.证书校验、生成密码、公钥加密

客户端收到服务器回应以后,首先验证服务器返回的证书。如果证书不是可信机构颁发,或者证书中的域名与实际域名不一致,或者证书已经过期,以浏览器为例客户端会向网页访问者显示一个警告,由其选择是否还要继续通信。 如果证书没有问题,客户端就会从证书中取出服务器的公钥。然后生成密码、公钥加密。

生成密码的过程会先产生一个随机数Pre-master key,该随机数是整个握手阶段出现的第三个随机数,稍后会经过公钥加密发送到服务端,有了它以后,客户端和服务器就同时有了三个随机数——RandomC,RandomS,Pre-master key,接着双方就用事先商定的加密方法,各自生成本次会话所用的同一把“协商密钥”。

4.加密信息C-S

加密信息是指上面一步生成的内容,主要包括

  • 一个随机数Pre-master key。用于给服务端生成“协商密钥”。
  • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
  • 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项通常也是前面发送的所有内容的hash值,用来供服务器校验。

5.私钥解密、解密握手消息、验证Hash

服务器收到客户端公钥加密的第三个随机数Pre-master key之后,通过自身私钥解密该数值并由之前的RandomC和RandomS计算生成本次会话所用的“会话密钥”。然后,通过约定的Hash算法验证客户端发送的数据完整性。

6.加密信息S-C

主要是指

  • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
  • 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发生的所有内容的hash值,用来供客户端校验。

7.解密握手消息、验证Hash

客户端解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束。

8.正常加密通信

握手成功之后,所有的通信数据将由之前协商密钥及约定好的算法进行加密解密。

相关文章

  • Https连接建立过程

    Https的全称是Http over SSL,而SSL是在TCP协议之上的保密层,但是它也是属于传输层的,如果直接...

  • Https连接建立过程

    Https的全称是Http over SSL,而SSL是在TCP协议之上的保密层,但是它也是属于传输层的,如果直接...

  • HTTPS连接建立过程

    在面试的过程中经常会被问到http和https相关的问题,包括https连接建立过程,所以就把相关的内容整理下放在...

  • HTTPS连接过程

    HTTPS(Hyper Text Transfer Protocol Secure),是一种基于SSL/TLS的H...

  • HTTPS连接过程

    SSL建立连接过程 client向server发送请求https://baidu.com[https://baid...

  • https 建立连接过程

    思考问题的顺序 学技术时,总是会问什么?这里也不例外,https为什么会存在,它有什么优点,又有什么缺点?为什么网...

  • https建立连接过程

    一、背景 现在大多数的网站都升级为https协议了,包括百度、知乎等,当然还包括对安全性要求高的支付业务和银行业务...

  • HTTPS加密连接过程

    记得在前几年,很多网站都是使用的HTTP,那样可以直接中间人攻击(A用户不间断的发送给B用户一个ARP报文, 告诉...

  • TCP、HTTPS连接建立过程

    综述SSL、TLS、CA TCP连接建立 用信鸽来解释HTTPS HTTPS连接建立 综述 理解一个抽象概念,可以...

  • HTTPS建立连接过程

    最近有同事问关于HTTPS连接建立的过程,前段时间看过不少别人的解读,现在把自己的一点理解写下来,请大家多指教交流...

网友评论

      本文标题:HTTPS连接过程

      本文链接:https://www.haomeiwen.com/subject/keiubqtx.html