HTTPS数据传输过程简介
HTTPS数据传输过程
1、客户端发起HTTPS连接握手
2、服务端收到HTTPS握手连接请求,与客户建立握手过程,和TCP的三次握手类似,并发送一系列的加密算法组合给客户端,与客户端协商加密算法组合
3、客户端收到这一系列的组合,从中选择一个自己能够支持的并且加密级别最高的加密算法组合,通告给服务端
4、服务端收到并确认客户端选择的加密组合,并将公钥证书发送给客户端,(这个公钥证书使用了非对称加密算法,使用这个公钥加密的信息只能由私钥解开,而这个私钥只有公钥的颁布者也就是服务端拥有,也就是说客户端用公钥加密的信息,只能有拥有私钥的服务端解开)
5、客户端收到公钥证书之后,临时随机生成一个对称密钥用来对数据加密,用公钥对生成的对称密钥进行加密得到对称密钥加密密文,这个对称密钥加密密文只能通过服务端的私钥解开
6、服务端收到对称密钥加密密文,用私钥解开得到对称密钥
7、客户端开始对数据加密,先用对称密钥加密数据得到数据密文,再对数据密文进行hash计算得到一个hash值,再将这个hash值用公钥加密得到hash值密文,然后将数据密文、hash值、hash值密文这三个部分一起发送给服务端
8、服务端收到数据密文、hash值、hash值密文,首先用私钥解开hash值密文,结果和收到的hash值对比验证hash值是否在传输的过程中被篡改,然后对数据密文进行hash计算,结果和收到的hash值对比验证数据密文在传输过程中被篡改。通过这两步验证传输数据没有被改变,再用对称加密密钥对数据密文加密得到原数据内容
HTTPS数据传输过程简介的更多相关文章
- TLS就是SSL的升级版+网络安全——一图看懂HTTPS建立过程——本质上就是引入第三方监管,web服务器需要先生成公钥和私钥,去CA申请,https通信时候浏览器会去CA校验CA证书的有效性
起初是因为HTTP在传输数据时使用的是明文(虽然说POST提交的数据时放在报体里看不到的,但是还是可以通过抓包工具窃取到)是不安全的,为了解决这一隐患网景公司推出了SSL安全套接字协议层,SSL是基于 ...
- 加密解密(4)SSL协议及HTTPS握手过程
SSL协议 简介 SSL (Secure Sockets Layer 安全套接层)是一个安全协议,它提供使用 TCP/IP 的通信应用程序间的隐私与完整性.因特网的 超文本传输协议 (HTTP)使用 ...
- Apollo学习笔记(一):canbus模块与车辆底盘之间的CAN数据传输过程
Apollo学习笔记(一):canbus模块与车辆底盘之间的CAN数据传输过程 博主现在从车载自组网信道分配和多跳路由转向了自动驾驶,没啥经验,想快些做出来个Demo还是得站在巨人的肩膀上才行,我选择 ...
- 浅谈HTTPS传输过程
HTTPS是什么 HTTPS不是一个新的协议,可以理解为是一个HTTP协议的加密"版本"(HTTP+SSL(TLS)).那为什么HTTP协议需要加密,不加密会出现什么问题呢?先来了 ...
- HTTPS连接建立过程(单向&双向)
HTTPS连接建立过程(单向&双向) 什么是https SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Securit ...
- HTTPS建立过程
由于HTTPS建立过程经常忘记,固记录 HTTPS建立流程 客户端发起SSL连接 服务端发送证书(证书中包含了服务端公钥) 客户端根据已有证书判断是否是可信任的(客户端决定是否继续) 服务端要求客户端 ...
- HTTPS 握手过程理解
转自https://www.jianshu.com/p/a3a25c6627ee https://blog.csdn.net/xingtian713/article/details/11953057 ...
- 网络安全——一图看懂HTTPS建立过程
关于网络安全加密的介绍可以看之前文章: 1. 网络安全--数据的加密与签名,RSA介绍 2. Base64编码.MD5.SHA1-SHA512.HMAC(SHA1-SHA512) 3. When I ...
- 图解HTTPS建立过程
阅读目录 准备工作(对应图中prepare1234) 发起链接 最后 关于网络安全加密的介绍可以看之前文章: 1. 网络安全——数据的加密与签名,RSA介绍2. Base64编码.MD5.SHA1-S ...
随机推荐
- 10.python面向对象进阶功能
isinstance(obj,cls)和issubclass(sub,super)(1)isinstance(obj,cls)检查一个对象obj是否是一个类cls的实例(2)issubclass(su ...
- 通过 ppa 在ubuntu server 上安装java 8
第一步:使用ppa/源方式安装,安装ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get update 第二步:安装 oracle ...
- C++中字符数组与string的相互转换
字符数组转化成string类型char ch [] = "ABCDEFG";string str(ch);//也可string str = ch;或者char ch [] = &q ...
- PythonStudy——Python 中Switch-Case 结构的实现
学习Python过程中,发现Python没有Switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现.所以不妨自己来实现Switch-Case功能. 方法一 ...
- 在干净的ubuntu 14.10上编译Qemu2.2.0的过程
下载Qemu的源代码 从官网http://wiki.qemu.org/Main_Page 中下载最新的源代码,目前是2.2.0. 安装依赖库和编译 编译过程分两步1. ./configure 2. m ...
- maven+dubbo+zookeeper 基础实例
1.maven 引入依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:/ ...
- Python Django orm操作数据库笔记之QuerySet API
什么时候Django会将QuerySet转换为SQL去执行: 根据Django的数据库机制,对于QuerySet来说,当QuerySet被第一次构建,然后又调用他的filter方法,接着在对其进行切片 ...
- Linux tmpwatch命令详解
Linux tmpwatch命令 Linux tmpwatch命令用于删除暂存文件. 执行tmpwatch指令可删除不必要的暂存文件,您可以设置文件超期时间,单位以小时计算 用法: tmpwatch ...
- Ubuntu 12.04图形界面不能登录问题
问题描述: Ubuntu 12.04进入到登录界面,输入用户名和密码无法登录, 输出密码后又跳回到登录界面, 执行快捷键Ctrl+Alt+F1, 可以进入tty1命令行, 可以root或者普通用 ...
- 在内存中加载DLL
有个需求是把一个DLL作为数据打包到EXE中,运行的时候动态加载.但要求不是释放出来生成DLL文件加载. 花了一天时间做出来.效果还可以. 不过由于是直接分配内存加载DLL的.有一些小缺陷.例如遍历进 ...