HTTPS协议建立过程

1) 客户端首次发送请求时,由于客户端(浏览器等)对一些加解密算法的支持程度不一样,但是在TLS传输中必须使用相同的加解密算法,所以在TLS握手的阶段,客户端告诉服务器端自己支持的加密算法(加密套件list),客户端产生一个随机数存在客户端,并且传送给服务器,客户端的随机数要和服务器端的随机数结合起来产生Master Secret(秘钥)。

所以要返回的是:支持的协议版本,TLS1.0;客户端生成的随机数(1);支持的加密方式;支持的压缩算法。

2) 服务器端在接受到客户端的请求之后,要确定加密协议的版本,以及加密的算法,然后也生成一个随机数(2),以及将自己的证书一并发送给客户端。

服务器端要提供的信息:协议的版本;加密的算法;随机数(2),服务器证书。

3) 客户端再次响应,首先对证书进行验证,验证通过之后,客户端会再次生成一个随机数(3),使用证书中公钥进行加密,并放一个(changeCipherSpec)编码改变的消息,以及前面所以消息的hash值,进行服务器验证,然后用新秘钥进行加密一段数据一并发送到服务器端,确保通信前无误。客户端使用前面两个随机数以及刚刚生成的随机素,使用与服务器确定的加密算法,生成一个session Secret。

注:changeCipherSpec是一个独立的协议,体现在数据包中就是一个字节的数据,用于告知服务器端,客户端已经切换到之间协商好的加密套件中,准备使用之前协商好的加密套件加密数据进行传输。

4) 服务器再次响应,在接收到客户端传输过来的第三个随机数的加密之后的数据,使用私钥对这段数据进行解密,对数据进行验证,然后会跟客户端使用相同的方式生成秘钥。这时,服务器给客户端发送一个ChangeCipherSpec,告知客户端已经切换到协商的加密套件状态,准备使用加密套件和session secret加密数据,之后服务器端会使用session secret加密一段Finish消息给客户端,已验证之前通过握手建立起来的加密通道是否成功。

5) 后续客户端和服务器之间的通信,确定好秘钥之后,服务器与客户端之间的通信就会通过商议好的秘钥进行加密,进行通信。

注:SSL协议在握手阶段使用的是非对称加密,在传输阶段使用的对称的加密。

https协议详解的更多相关文章

  1. HTTP&HTTPS协议详解之HTTP篇

    一.HTTP简介 01.什么是HTTP HTTP(HyperText Transfer Protocol ,超文本传输协议),是一个基于请求与响应的,无状态的,应用层的协议,常基于TCP/IP协议传输 ...

  2. ssl和https协议详解

    转自:https://cuiyongxiu.com/201102/24157.html ssl协议的起源和历史我就不再多说了,就是那个Netscape 网景公司开发的,它的作用主要是提供了一种安全传输 ...

  3. HTTPS协议详解(一):HTTPS基础知识

    HTTPS基础知识:HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息. ...

  4. HTTPS协议详解(三):PKI 体系

    转自:https://blog.csdn.net/hherima/article/details/52469488 1.RSA身份验证的隐患    身份验证和密钥协商是TLS的基础功能,要求的前提是合 ...

  5. HTTPS加密协议详解(一):HTTPS基础知识

    转自:https://blog.csdn.net/hherima/article/details/52469267------------------------------专栏导航:-------- ...

  6. HTTP协议详解以及URL具体访问过程

    1.简介 1.1.HTTP协议是什么? 即超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准.从 ...

  7. (转)HTTP 协议详解(基础)

    HTTP 协议详解 作者: 小坦克  来源: 博客园  发布时间: 2012-02-14 13:32  阅读: 95523 次  推荐: 99   原文链接   [收藏]   相关文章:HTTP 协议 ...

  8. Java web 入门知识 及HTTP协议详解

     Java  web  入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...

  9. 【HTTP协议】---HTTP协议详解

    HTTP协议详解 一.HTTP简介 1.HTTP协议,即超文本传输协议(Hypertext transfer protocol).是一种详细规定了浏览器和万维网(WWW = World Wide We ...

随机推荐

  1. 【mysql】mysql 调优之 ——执行计划 explain

    1.what is explain(explain 是个什么东东) explain(解释),在 Mysql 中 作为一个关键词,用来解释 Mysql 是如何执行语句,可以连接 select .dele ...

  2. js的预解析

    在ES6之前,变量使用var声明,会存在变量的预解析(函数也有预解析).ES6引了let和const,但是现阶段ES6并没有完全普及,而且很多比较老的代码都还是按照ES5的标准甚至是ES3的标准来书写 ...

  3. Spring中的IOC_源码_随笔

    Spring ioc 叫控制反转,也就是把创建Bean的动作交给Spring去完成. spring ioc  流程大致为 定位-> 加载->注册 先说几个比较有意思的点 1.Spring中 ...

  4. Linux 的文件权限和目录配置

    1.Linux文件属性 用root用户登录linux后,执行 ls -al 命令查看文件.显示如下: 文件属性示意图如下: 第一列代表这个文件的类型和权限 第一个字符代表这个文件是:目录.文件或链接文 ...

  5. Python内置函数(25)——getattr

    英文文档: getattr(object, name[, default]) Return the value of the named attribute of object. name must ...

  6. JVM基础系列第15讲:JDK性能监控命令

    查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程.如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示. $ jps 6540 ...

  7. C++版 - Leetcode 400. Nth Digit解题报告

    leetcode 400. Nth Digit 在线提交网址: https://leetcode.com/problems/nth-digit/ Total Accepted: 4356 Total ...

  8. 从锅炉工到AI专家(10)

    RNN循环神经网络(Recurrent Neural Network) 如同word2vec中提到的,很多数据的原型,前后之间是存在关联性的.关联性的打破必然造成关键指征的丢失,从而在后续的训练和预测 ...

  9. CentOs~程序部署那些事

    永久更新中…… 主要说一下在centos里,在安装程序和监控程序时,用到的一些常用的命令,希望可以帮到大家! 远程安装程序包:yum install 程序包名 下载程序包:wget 程序包地址 解压t ...

  10. React Native (二) ios打包到真机

    每当在模拟器上完成了开发,都想到真机上试试,正好前段时候淘了一个imac. 这里就以打包rndemo到iphone为例,讲一下react ntive ios打包到真机的流程. 一.前置 1.有个iph ...