HTTPS工作流程(入门)

1、CA(为服务器做担保的第三方机构)将包含CA【公钥C】等信息的【证书C】发送给浏览器;
2、服务器将其【公钥S】和网站信息发送给CA;
3、CA用CA【私钥C】将这些信息加密得到了签名后的【服务器证书S】,发送给服务器;
4、浏览器输入使用https协议的url;
5、浏览器与服务器建立TCP连接;
6、浏览器与服务器建立TLS(SSL)连接(1):主要传输浏览器支持的加密算法列表等,其中还包括用于生成对称密钥的客户端随机数;
7、浏览器与服务器建立TLS(SSL)连接(2):传输服务器选择的加密算法,其中包括用于生成对称密钥的服务器随机数;
8、浏览器与服务器建立TLS(SSL)连接(3):传输【服务器证书S】(经过CA私钥加密的公钥、域名等);
9、浏览器用CA【证书C】的公钥解密【服务器证书S】,进行证书校验,验证解密后的【服务器证书S】中的域名是否正确并获得服务器【公钥S】;
10、浏览器与服务器建立TLS(SSL)连接(4):浏览器产生pre_master key,用服务器发来的【公钥S】加密后发给服务器(用生成对称密钥);
11、浏览器用客户端随机数、服务器随机数、pre_master key生成对称加密【密钥A】;
12、服务器用其【密钥S】将收到的pre_master key解密,生成对称加密【密钥A】;
13、浏览器与服务器建立TLS(SSL)连接(5):浏览器通知服务器协商完成;
14、浏览器与服务器建立TLS(SSL)连接(6):浏览器生成一段信息,用生成的对称【密钥A】加密发送给服务器用于握手验证;
15、服务器用生成的【密钥A】解密收到的信息,验证协商结果的正确性;
16、浏览器与服务器建立TLS(SSL)连接(7):服务器同样生成一段信息,用生成的对称【密钥A】加密发送给浏览器用于握手验证;
17、浏览器用生成的【密钥A】解密收到的信息,验证协商结果的正确性,通过后则握手协商过程结束;
18、开始后续双方建立在此次安全握手基础上的会话,用对称加密【密钥A】对对话加密。
总结:
一、浏览器保存有CA机构的信息,包括公钥,通过CA对相关网站的担保确定网站请求的安全性【1】;
二、服务器的公钥和网站信息通过CA的私钥签名确保公钥、网站等信息不会被中间人更改【2-3】;
三、建立安全ssl连接,用CA机构的【公钥C】解密,确保每一次浏览器与服务器间的会话信息都没有被串改,获得对方有效的【公钥S】以及随机数【6-9】;
四、用【公钥C】加密传递pre_master key,确保双方计算出相同的对称加密【密钥A】【10-13】;
五、用协商生成的【密钥A】验证ssl握手和密钥的正确性,完成ssl握手过程【14-17】;
HTTPS工作流程(入门)的更多相关文章
- [信息安全] 3.HTTPS工作流程
[信息安全]系列博客:http://www.cnblogs.com/linianhui/category/985957.html 0. 简单回顾 在前面两篇博客中介绍了密码相关的一些基本工具,包括(对 ...
- HTTPS工作流程
HTTPS工作流程 RSA算法 RSA的密钥分成两个部分: PublicKey 加密数据 验证签名 不能解密 任何人都可以获得 Private Key 数据签名(摘要算法) 解密 加密(不用此功能) ...
- Mybatis第一篇【介绍、快速入门、工作流程】
什么是MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...
- SpringMVC第一篇【介绍、入门、工作流程、控制器】
什么是SpringMVC? SpringMVC是Spring家族的一员,Spring是将现在开发中流行的组件进行组合而成的一个框架!它用在基于MVC的表现层开发,类似于struts2框架 为什么要使用 ...
- 工作流程引挈 https://www.flowable.org/
工作流程引挈 : https://www.flowable.org/ 起源:JBPM,Activiti
- HTTPS协议工作流程
被问到了,复习一下HTTPS的工作流程 提到https,不得不提SSL SSL 1. 安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全 ...
- Java开发学习(十五)----AOP入门案例及其工作流程解析
一.AOP简介 1.1 什么是AOP AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构. OOP(Object Oriented ...
- Java开发学习(二十三)----SpringMVC入门案例、工作流程解析及设置bean加载控制
一.SpringMVC概述 SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装.SpringMVC是处于Web层的框架,所以其主要的作用就是用来 ...
- SSL协议(HTTPS) 握手、工作流程详解(双向HTTPS流程)
原文地址:http://www.cnblogs.com/jifeng/archive/2010/11/30/1891779.html SSL协议的工作流程: 服务器认证阶段:1)客户端向服务器发送一个 ...
随机推荐
- OV5640摄像头的数据处理配置流程(一)
module RGB_init( //系统信号输入(时钟+复位) input cmos_clk_i, //模块控制时钟 input rst_n_i, //系统复位信号 //OV5640输出信号(从56 ...
- [Jupyter Notebook]Notebook添加Ancona虚拟环境
1.首先安装ipykernel:conda install ipykernel 解决安装ipykernel权限报错问题 wangbin@Skyell_Cloud:~$ sudo chown -R wa ...
- Android常见内存泄露
前言 对于内存泄漏,我想大家在开发中肯定都遇到过,只不过内存泄漏对我们来说并不是可见的,因为它是在堆中活动,而要想检测程序中是否有内存泄漏的产生,通常我们可以借助LeakCanary.MAT等工具来检 ...
- jvm与程序的生命周期
yls 2019/11/5 java虚拟机结束生命周期的情况: 执行了System.exit(); 程序正常运行结束 程序在执行过程中遇到异常或错误而异常终止 由于操作系统出现错误而导致jvm进程终止 ...
- thinkphp分页样式css代码
<style type="text/css"> .Pagination a:hover,.current{background-color: #f54281;borde ...
- 今天做一个项目的时候,要在一个编辑的jsp页面的textarea标签设置value属性,结果发现他没有value属性,但是是编辑页面又必须要回显要修改的内容,所以在参考了w3cschool之后很轻松的解决了这个问题。
今天做一个项目的时候,要在一个编辑的jsp页面的textarea标签设置value属性,结果发现他没有value属性,但是是编辑页面又必须要回显要修改的内容,所以在参考了w3cschool之后很轻松的 ...
- C++中对封装的语法支持——静态成员
静态成员(变量与函数) 1.静态成员变量的语法.访问.特点(共享.类内声明类外初始化) 静态成员变量在class中只做声明,并没有初始化所以不会分配内存. (1) 非静态成员变量必须通过对象来访问. ...
- nyoj 349 (poj 1094) (拓扑排序)
Sorting It All Out 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 An ascending sorted sequence of distinct ...
- 看源码学编程系列之kafka(一)
kafka 由于它自身的高性能发送与消费能力,而受到广大企业的喜欢,所以我们就先看看kafka 一些源码实现如下: public void run() { int messageNo = 1; whi ...
- linux下制作linux系统盘(光盘、U盘)
cdrecord制作启动光盘 首先cdrecord -scanbus输出设备列表和标识,(我的此次为5,0,0) [ˈrekərd] 然后用cdrecord -v dev=5,0,0 -eject ...