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. .net core consul 服务配置 服务发现 服务健康检测 服务变更加载

    准备环境 安装consul之后 1. 创建一个.net core webapi 举例为UsercenterService 2. nuget引用Consul组件  https://github.com/ ...

  2. pytorch: 准备、训练和测试自己的图片数据

    大部分的pytorch入门教程,都是使用torchvision里面的数据进行训练和测试.如果我们是自己的图片数据,又该怎么做呢? 一.我的数据 我在学习的时候,使用的是fashion-mnist.这个 ...

  3. 1K star+ 的项目是如何炼成的?

    前言 首先标题党一下,其实这篇文章主要是记录我的第二个过 1K star 的项目 Java-Interview,顺便分享下其中的过程及经验. 需求选择 Java-Interview 之所以要做这个项目 ...

  4. springBoot(12)---整合Swagger2

    Spingboot整合Swagger2 随着互联网技术的发展,一般开发都是前后端分离,那么前端和后端的唯一联系,变成了API接口:API文档变成了前后端开发人员联系的纽带,变得越来越重要,没有API ...

  5. asp.net core系列 40 Web 应用MVC 介绍与详细示例

    一. MVC介绍 MVC架构模式有助于实现关注点分离.视图和控制器均依赖于模型. 但是,模型既不依赖于视图,也不依赖于控制器. 这是分离的一个关键优势. 这种分离允许模型独立于可视化展示进行构建和测试 ...

  6. Linux vi常用命令

    vi常用命令[Ctrl] + [f] 屏幕『向前』移动一页(常用)[Ctrl] + [b] 屏幕『向后』移动一页(常用)0 这是数字『 0 』:移动到这一行的最前面字符处(常用)$ 移动到这一行的最后 ...

  7. App阅读pdf和扫描二维码功能

    在之前开发的Android手机App中,需要实现阅读pdf和扫描二维码的功能,在github 上找到大牛封装好包,亲测可用. 阅读pdf: https://github.com/barteksc/An ...

  8. VBA批量导入图片到多Word文档并加标题(会飞的鱼)

    感谢会飞的鱼大牛~ Public fp$, obmapp As Object Sub kk() 文件夹浏览器 Application.ScreenUpdating = False Set fso = ...

  9. 杭电ACM2004--成绩转换

    成绩转换 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  10. IT公司PM沟通那儿些事(一)

    本质:传递信息 沟通是不同的行为主体,通过各种载体实现信息的双向流动,形成行为主体的感知,以达到特定目标的行为过程. 信息的准确性弥足珍贵,在工作中,沟通传递的是应该是信息本身,而非情绪. 目标:解决 ...