美文网首页
Https详解

Https详解

作者: ZMRWEGo | 来源:发表于2018-11-30 17:25 被阅读3次

概述

HTTPS,从字面上看,即在HTTP协议下加上一层SSL(安全套接字层 secure socket layer),对于上层应用来看,原来的发送接收数据的流程不变,这便很好的兼容了HTTP协议。


一、协议的加密流程

我们知道,非对称加密是相较于对称加密更为安全的一种加密方式,但是非对称加密所需要耗费的计算资源也会随之提高许多。所以https协议的基本原理就是,通过SSL/TLS握手安全的协商出一份对称加密的密钥,随后传输的数据都采用该密钥进行加解密

1.1、SSL/TLS握手过程

1. Client Hello

握手第一步是客户端向服务端发送 Client Hello 消息,这个消息里包含了一个客户端生成的随机数 Random1、客户端支持的加密套件(Support Ciphers)和 SSL Version 等信息。

2. Server Hello

第二步是服务端向客户端发送 Server Hello 消息,这个消息会从 Client Hello 传过来的 Support Ciphers 里确定一份加密套件,这个套件决定了后续加密和生成摘要时具体使用哪些算法,另外还会生成一份随机数 Random2。注意,至此客户端和服务端都拥有了两个随机数(Random1+ Random2),这两个随机数会在后续生成对称秘钥时用到。
客户端验证
这一步是服务端将自己的证书下发给客户端,让客户端验证自己的身份,客户端验证通过后取出证书中的公钥。

3. Certificate Verify

客户端收到服务端传来的证书后,先从 CA 验证该证书的合法性,验证通过后取出证书中的服务端公钥,再生成一个随机数 Random3,再用服务端公钥非对称加密 Random3 生成 PreMaster Key

上面客户端根据服务器传来的公钥生成了 PreMaster Key,Client Key Exchange 就是将这个 key 传给服务端,服务端再用自己的私钥解出这个 PreMaster Key 得到客户端生成的 Random3。至此,客户端和服务端都拥有 Random1 + Random2 + Random3,两边再根据同样的算法就可以生成一份秘钥,握手结束后的应用层数据都是使用这个秘钥进行对称加密。为什么要使用三个随机数呢?这是因为 SSL/TLS 握手过程的数据都是明文传输的,并且多个随机数种子来生成秘钥不容易被暴力破解出来。

4. 密钥协商验证

服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的"会话密钥"。然后,向客户端最后发送下面信息。

(1)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。

(2)服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。

至此,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用"会话密钥"加密内容。

相关文章

  • HTTPS协议

    HTTPS协议详解(一):HTTPS基础知识HTTPS协议详解(二):TLS/SSL工作原理HTTPS协议详解(三...

  • HTTPS详解

    在了解HTTPS之前,有以下几个知识需要先去了解。 一、何为公私钥? 1、在密码学中,分为两大体制,一种为单钥体制...

  • Https详解

    存在即合理 http是非常常见的应用层协议,是超文本传输协议的简称,其传输的内容都是明文的。在这个混乱的世界,明文...

  • HTTPS详解

    原文地址:http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html ...

  • Https详解

    最近被人问到Https的细节,发现自己的理解还是太过浅陋,所以在此重新总结一下。 概述 HTTPS(全称:Hype...

  • HTTPS详解

    关于为什么使用HTTPS,为什么选用对称加密和非对称加密混合方式,网上有很多,可以参考如下两篇文章:1.HTTPS...

  • HTTPS详解

    一、前言 1.通信的加密(报文传输通道的加密,即对称加密算法协商过程的加密) 2.内容的加密(报文主体的加密,即对...

  • Https详解

    概述 HTTPS,从字面上看,即在HTTP协议下加上一层SSL(安全套接字层 secure socket laye...

  • Https详解

    协议 1、HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器...

  • Https 详解

    超文本传输安全协议(HTTPS,常称为 HTTP over TLS/SSL)是一种通过计算机网络进行安全通信的传输...

网友评论

      本文标题:Https详解

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