Https涉及到的主体

  1. 客户端。通常是浏览器(Chrome、IE、FireFox等),也可以自己编写的各种语言的客户端程序。
  2. 服务端。一般指支持Https的网站,比如github、支付宝。
  3. CA(Certificate Authorities)机构。Https证书签发和管理机构,比如Symantec、Comodo、GoDaddy、GlobalSign。

下图里我画出了这几个角色:

发明Https的动机

  1. 认证正在访问的网站。什么叫认证网站?比如你正在访问支付宝,怎样确定你正在访问的是阿里巴巴提供的支付宝而不是假冒伪劣的钓鱼网站呢?
  2. 保证所传输数据的私密性和完整性。众所周知,Http是明文传输的,所以处在同一网络中的其它用户可以通过网络抓包来窃取和篡改数据包的内容,甚至运营商或者wifi提供者,有可能会篡改http报文,添加广告等信息以达到盈利的目的。

Https的工作流程

这一节通过介绍Https协议的工作流程,来说明Https是如何达成自己的两个目的的。下图我画出了Https的工作流程,注意,这只是原理示意图,并不是详细的协议解析。

可以看到工作流程,基本分为三个阶段:

  1. 认证服务器。浏览器内置一个受信任的CA机构列表,并保存了这些CA机构的证书。第一阶段服务器会提供经CA机构认证颁发的服务器证书,如果认证该服务器证书的CA机构,存在于浏览器的受信任CA机构列表中,并且服务器证书中的信息与当前正在访问的网站(域名等)一致,那么浏览器就认为服务端是可信的,并从服务器证书中取得服务器公钥,用于后续流程。否则,浏览器将提示用户,根据用户的选择,决定是否继续。当然,我们可以管理这个受信任CA机构列表,添加我们想要信任的CA机构,或者移除我们不信任的CA机构。

  2. 协商会话密钥。客户端在认证完服务器,获得服务器的公钥之后,利用该公钥与服务器进行加密通信,协商出两个会话密钥,分别是用于加密客户端往服务端发送数据的客户端会话密钥,用于加密服务端往客户端发送数据的服务端会话密钥。在已有服务器公钥,可以加密通讯的前提下,还要协商两个对称密钥的原因,是因为非对称加密相对复杂度更高,在数据传输过程中,使用对称加密,可以节省计算资源。另外,会话密钥是随机生成,每次协商都会有不一样的结果,所以安全性也比较高。

  3. 加密通讯。此时客户端服务器双方都有了本次通讯的会话密钥,之后传输的所有Http数据,都通过会话密钥加密。这样网路上的其它用户,将很难窃取和篡改客户端和服务端之间传输的数据,从而保证了数据的私密性和完整性。

使用Https的流程

如果你是一个服务器开发者,想使用Https来保护自己的服务和用户数据安全,你可以按照以下流程来操作。

总结

  1. 说是讨论Https,事实上Https就是Http跑在SSl或者TLS上,所以本文讨论的原理和流程其实是SSL和TLS的流程,对于其它使用SSL或者TLS的应用层协议,本文内容一样有效。
  2. 本文只讨论了客户端验证服务端,服务端也可以给客户端颁发证书并验证客户端,做双向验证,但应用没有那么广泛,原理类似。
  3. 由于采用了加密通讯,Https无疑要比Http更耗费服务器资源,这也是很多公司明明支持Https却默认提供Http的原因。

HTTPS 工作流程梳理相关推荐

  1. [信息安全] 3.HTTPS工作流程

    0. 简单回顾 在前面两篇博客中介绍了密码相关的一些基本工具,包括(对称密码,公钥密码,密码散列函数,混合密码系统,消息认证码码,数字签名,伪随机数,数字证书)这几个.其中它们之间也是互相依赖的,我们 ...

  2. 【计算机网络】HTTP 与 HTTPS ( HTTP 在网络各个层级的传输过程 | HTTPS 工作流程 | HTTPS 弊端 )

    文章目录 一.HTTP 在网络各个层级的传输过程 二.HTTPS 工作流程 1.中间人篡改服务器下发的数字证书 2.中间人冒充服务器端 三.HTTPS 弊端 一.HTTP 在网络各个层级的传输过程 应 ...

  3. 敏捷开发--实际工作流程梳理

    敏捷开发–工作流程梳理,让工作更效率 前言:说下我公司敏捷模式,发布周期工作流程和故事开发流程 先说下敏捷的相关概念: 敏捷简述: 敏捷开发是以用户的需求进化为核心,采用迭代.循序渐进的方法进行的软件 ...

  4. 4-2 能力提升与优势打造-工作流程梳理-从执行跃迁到流程的方法流程化、工具化、清单化

    本次目标: (1)获得从基础琐碎的工作中锻炼能力.干出成绩的方法 (2)学习流程化.工具化.清单化这三个方法 (3)沉淀工作经验,迅速摆脱基层岗位的经验束缚 (4)具备管理岗位具备的能力,加速职业发展 ...

  5. 深入理解HTTPS工作原理

    前言 近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器.搜索引擎.CA机构.大型互联网企业的共同促进下,互联网迎来了"HTT ...

  6. SSL协议(HTTPS) 握手、工作流程详解(双向HTTPS流程)

    SSL协议的工作流程: 服务器认证阶段:1)客户端向服务器发送一个开始信息"Hello"以便开始一个新的会话连接:2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器 ...

  7. 工作七年后,我梳理了自己的产品工作流程

    本文由作者 刀哥说 发布于社区部门有个UI妹子,一直对做产品比较感兴趣,想转岗,问我能不能带带她,这个妹子跟我关系还算不错,加上我也是从业多年的老司机,心想应该没多大问题,于是就答应了她.但没过多久就 ...

  8. HTTPS的工作流程

    hi,大家好,好久不见,今天为大家带来HTTPS协议的工作流程 认识HTTPS 加密是什么 HTTPS的工作流程 1.认识HTTPS HTTPS也是应用层协议,让我们再来回忆一下TCP/IP五层协议模 ...

  9. MFC 学习笔记(一):MFC单文档程序运行流程梳理与总结

    MFC 学习笔记(一):MFC单文档程序运行流程梳理与总结 1.MFC单文档程序运行流程 1.首先利用全局变量对象 theApp 启动应用程序 (这是因为这个全局对象,基类CWinApp中 this ...

最新文章

  1. Newtonsoft.Json.dll 本地调用正常,服务器调用不正常
  2. pytorch模型加载测试_使用Pytorch实现物体检测(Faster R-CNN)
  3. Linux下rz命令和sz命令使用方法
  4. Javascript设计模式之中介者模式
  5. 字符串转换整数(atoi)Python解法
  6. 关于浮动float属性和position:absolute属性的区别
  7. docker mysql5.7 主从_docker-compose mysql5.7.30 主从
  8. jsoup解析和遍历一个html文档详解
  9. 幸好权健AI还没落地!一个腕表顶中医,18个关键点就能刷脸
  10. Ubuntu下RamDisk使用
  11. 关于欧几里德第五公设的感言
  12. 命令行构建Unity项目
  13. unity学习笔记-uniwebview3的使用以及一些补充(视频问题已解决)
  14. 软考(中级-软件设计师)知识点整理
  15. 十二个开源UML工具
  16. Multigen VEGA簡介
  17. c#笔记--程序集(Assembly)、模块(Module)、类型(class)、命名空间、反射
  18. 微信小程序——点赞和取消点赞功能的实现
  19. 2018.4.1(python) 请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。 //(米和英寸之间的长度转换)//热量转换
  20. C#多线程(二) -- ThreadStart

热门文章

  1. 电脑 默认网关不可用,时不时断网,解决办法
  2. 【渝粤教育】广东开放大学 人际沟通实务 形成性考核 (49)
  3. sqlserver注册表清理
  4. Card Trick
  5. C++_类中的6个默认成员函数
  6. Windows命令行的使用
  7. linux获取u盘厂商名称,根据/proc/partitions获取插入的U盘设备名称
  8. 程序员下班后都忙些啥?| 程序员有话说
  9. 今日头条的用户体验分析
  10. WSL下Docker使用踩坑小记