当前位置: 首页 > news >正文

https原理

933779-20180315204452929-1070522585.png
步骤 1: 客户端通过发送 Client Hello 报文开始 SSL 通信。报文中包含客户端支持的 SSL 的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度和散列算法等)。
步骤 2: 服务器可进行 SSL 通信时,会以 Server Hello 报文作为应答。和客户端一样,在报文中包含 SSL 版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。
步骤 3: 之后服务器发送 Certificate 报文。报文中包含公开密钥证书。
步骤 4: 最后服务器发送 Server Hello Done 报文通知客户端,最初阶段的SSL握手协商部分结束。

步骤 5: SSL 第一次握手结束之后,客户端以 Client Key Exchange 报文作为回应。报文中包含通信加密中使用的一种被称为 Pre-master secret 的随机密码串。该报文已用步骤 3 中的公开密钥进行加密。
步骤 6: 接着客户端继续发送 Change Cipher Spec 报文。该报文会提示服务器,在此报文之后的通信会采用 Pre-master secret 密钥加密。
步骤 7: 客户端发送 Finished 报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。

步骤 8: 服务器同样发送 Change Cipher Spec 报文。
步骤 9: 服务器同样发送 Finished 报文。

步骤 10: 服务器和客户端的 Finished 报文交换完毕之后,SSL 连接就算建立完成。当然,通信会受到 SSL 的保护。从此处开始进行应用层协议的通信,即发送 HTTP请求。
步骤 11: 应用层协议通信,即发送 HTTP 响应。
步骤 12: 最后由客户端断开连接。断开连接时,发送 close_notify 报文。上图做了一些省略,这步之后再发送 TCP FIN 报文来关闭与 TCP 的通信。在以上流程中,应用层发送数据时会附加一种叫做 MAC(Message Authentication Code)的报文摘要。MAC 能够查知报文是否遭到篡改,从而保护报文的完整性。
下面是对整个流程的图解。图中说明了从仅使用服务器端的公开密钥证书(服务器证书)建立 HTTPS 通信的整个过程。
933779-20180315204613454-1703705487.png

原文表述更加具体:
https://www.cnblogs.com/zxj015/p/6530766.html
https://www.linuxidc.com/Linux/2015-08/121812.htm
http://www.cnblogs.com/zhangshitong/p/6478721.html

转载于:https://www.cnblogs.com/duex/p/8576192.html

相关文章:

  • [AR]Vumark(下一代条形码)
  • 实现前端MD5加密与记住用户名密码功能
  • 软件测试方法
  • Java EE作业(二)
  • SignalR Core尝鲜
  • MPAndroidChart绘制曲线图、柱状图总结
  • python 的函数、值传递、和作用域(例子)
  • python中的str.strip()的用法
  • 旅行计划(题解)
  • 用jQuery怎么做到前后端分离
  • 第三次冲刺
  • WPF自学入门(九)WPF自定义窗口基类
  • mongodb的数据库操作
  • php转义之gpc
  • 软件工程网络15结对编程作业
  • 《深入 React 技术栈》
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • JAVA SE 6 GC调优笔记
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Joomla 2.x, 3.x useful code cheatsheet
  • js 实现textarea输入字数提示
  • PAT A1092
  • Vue--数据传输
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 记录:CentOS7.2配置LNMP环境记录
  • 前端面试题总结
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 少走弯路,给Java 1~5 年程序员的建议
  • 用jQuery怎么做到前后端分离
  • 优秀架构师必须掌握的架构思维
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • $GOPATH/go.mod exists but should not goland
  • (52)只出现一次的数字III
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (二)springcloud实战之config配置中心
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (十三)Flask之特殊装饰器详解
  • (五)网络优化与超参数选择--九五小庞
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转) ns2/nam与nam实现相关的文件
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)一些感悟
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET 常见的偏门问题
  • /bin、/sbin、/usr/bin、/usr/sbin
  • @EnableAsync和@Async开始异步任务支持
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [20190401]关于semtimedop函数调用.txt
  • [AAuto]给百宝箱增加娱乐功能