简单聊聊Https的来龙去脉

这篇具有很好参考价值的文章主要介绍了简单聊聊Https的来龙去脉。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Http 通信具有哪些风险

  • 使用明文通信,通信内容可能会被监听
  • 不验证通信双方身份,因此可能会遭遇伪装
  • 无法验证报文完整性,可能会遭到中间人攻击,从而篡改请求和响应报文中的内容

Https = Http + SSL/TLS

Http 协议直接和TCP进行通信,而 Https 在 Http 和 Tcp 之间加了一层 SSL 实现加密传输 :
简单聊聊Https的来龙去脉,杂类篇,# web安全,# Linux网络篇,网络
SSL ( Secure Socket Layer ) 安全套接层 是一种密码通信框架,于1995年发布了3.0版本,而TLS(Transport Layer Security)传输层安全是在SSL 3.0基础上设计的协议,对SSL的安全性进行增强,相当于SSL的后续版本。

SSL是一个独立的协议,不只有Http可以使用,其他应用层协议如果需要加密支持都可以使用,比如FTP,SMTP等都可以使用SSL来加密。


对称加密 和 非对称加密

常用的加密算法分为两类:

  • 对称加密
  • 非对称加密

对称加密: 加密和解密使用同一把秘钥,服务器和客户端在通信初始阶段需要协商秘钥,该阶段存在窃听导致秘钥泄露的风险。

简单聊聊Https的来龙去脉,杂类篇,# web安全,# Linux网络篇,网络

非对称加密: 客户端和服务端均拥有一个公钥,服务端单独拥有一个私钥,公钥可以对外暴露,而私钥只有自己可见;使用公钥加密的信息,只有对应的私钥才能破解,反过来,使用私钥加密的消息,只有公钥才能解开。

简单聊聊Https的来龙去脉,杂类篇,# web安全,# Linux网络篇,网络
非对称加密可能存在公钥被拦截,然后被替换为中间人公钥的场景:

简单聊聊Https的来龙去脉,杂类篇,# web安全,# Linux网络篇,网络
或者中间人不替换公钥,但是通过拦截客户端发送的消息,然后篡改,使用服务器公钥加密后再发送,此时服务器将收到错误的消息
简单聊聊Https的来龙去脉,杂类篇,# web安全,# Linux网络篇,网络
非对称加密另一个缺点就是会比对称加密慢上很多。


数字证书

为了解决非对称加密过程中公钥传递的不安全性,人们想到了使用数字证书加上数字签名来解决这个问题。

数字证书的申请

在现实生活中,有一些专门的权威机构用来颁发证书,我们称之为认证中心 CA ,我们的服务器可以向这些CA来申请数字证书,申请流程大致如下:

  1. 服务器自己本地先生成一对秘钥,然后拿着自己的公钥以及其他信息(企业名称等)去CA申请数字证书。
  2. CA拿到这些信息后,会选择一种单向Hash算法(比如MD5)对这些信息进行加密,加密后的东西我们称之为摘要
  • 单向Hash算法有一种特点就是不可逆,只要原始内容有一点变化,加密后的结果都是不一样的(当然也存在很小的概率会发生重复 – 鸽巢原理),这样可以防止信息被篡改。
  • 比如用于检验IP报文是否完整的校验和,文件上传与下载对于的文件校验和,原理都是一样的
  1. 生成摘要后,CA还会用自己的私钥对摘要进行加密,摘要加密后的结果我们称之为数字签名
  2. 最后,CA 会将我们申请的信息(包含服务器公钥)和数字签名整合在一起,由此生成数字证书
  3. 然后CA把数字证书返回给服务器

简单聊聊Https的来龙去脉,杂类篇,# web安全,# Linux网络篇,网络


数字证书怎么起作用

服务器在获取到数字证书后,服务器会将数字证书发送给客户端,客户端需要用CA的公钥解密数字证书并检验数字证书的合法性,所以,首要问题是如何拿到CA的公钥 ?

我们的电脑和浏览器已经内置了一部分权威机构的根证书,这些根证书包含了CA的公钥:
简单聊聊Https的来龙去脉,杂类篇,# web安全,# Linux网络篇,网络
之所以是根证书,是因为现实生活中,认证中心也是分层级的,类似一个树状结构,虽然计算机中内置的是最顶级机构的根证书,但是根证书的公钥在子级也是适用的。

  1. 客户端用CA的公钥解密数字证书中的数字签名,如果解密成功说明证书来源于合法认证机构,解密成功后,客户端就可以拿到摘要。
  2. 然后,客户端按照和CA一样的Hash算法将申请信息(公钥,服务器域名,. . . ) 生成一份摘要,并和解密出来的那份做对比,如果相同说明内容完整,没有被篡改。
  3. 最后,客户端安全的从数字证书拿到服务器的公钥
  4. 随后就可以使用公钥和服务器进行安全的非对称加密通信了

简单聊聊Https的来龙去脉,杂类篇,# web安全,# Linux网络篇,网络


Https工作流程

Https = Http + SSL/TLS , 说白了,无非就是在http上披了一层加密的外壳,Https的整个通信流程如下图所示:
简单聊聊Https的来龙去脉,杂类篇,# web安全,# Linux网络篇,网络

  1. 客户端通过发送Client Hello报文开始通信,报文中包含客户端支持的SSL的指定版本,加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度等)
  2. 服务器可进行SSL通信时,会以Server Hello报文作为回答,和客户端一样,在报文中包含SSL版本以及加密组件,服务器加密组件内容是从接收到的客户端加密组件内容筛选出来的
  3. 服务器发送证书报文,报文中包含公开秘钥证书
  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连接就算建立完成了
  11. 从此处开始进行应用层协议的通信,即发送Http请求,此时的通信过程会受到SSL的保护
  12. 最后,由客户端端口连接,断开连接时,发送close_notify报文
  13. 这步之后,再发送TCP FIN报文来关闭与TCP的通信

另外,在以上流程图中,应用层发送数据时会附加一种叫做MAC(Message Authentication Code)的报文摘要。MAC能够查知报文是否遭到篡改,从而保证报文的完整性。

经过上面的介绍,我们可以看出https先是利用数字证书保证服务器端的公匙可以安全无误的到达客户端。然后再用非对称加密安全的传递共享密匙,最后用共享密匙安全的交换数据。


一定需要Https吗?

Https那么的安全,是不是我们在什么场景下都要去使用https进行通信呢?答案是否定的。文章来源地址https://www.toymoban.com/news/detail-684009.html

  1. https虽然提供了消息安全传输的通道,但是每次消息的加解密十分耗时,消息系统资源。所以,除非在一些对安全性比较高的场景下,比如银行系统,购物系统中我们必须要使用https进行通信,其他一些对安全性要求不高的场景,我们其实没必要使用https。
  2. 使用https需要使用到数字证书,但是一般权威机构颁发的数字证书都是收费的,而且价格也是不菲的,所以对于一些个人网站特别是学生来讲,如果对安全性要求不高,也没必要使用https。

到了这里,关于简单聊聊Https的来龙去脉的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从源码全面解析 dubbo 服务订阅的来龙去脉

    👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主 📕系列专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码系列、duubo源码系列 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦

    2024年02月09日
    浏览(37)
  • 从源码全面解析 Java SPI 的来龙去脉

    👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主 📕系列专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码系列、duubo源码系列 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦

    2024年02月12日
    浏览(39)
  • 从源码全面解析 dubbo 服务暴露的来龙去脉

    👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主 📕系列专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码系列 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 🍂博主正在努

    2024年02月07日
    浏览(41)
  • 从源码全面解析Java 线程池的来龙去脉

    👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主 📕系列专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码系列 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 🍂博主正在努

    2024年02月03日
    浏览(60)
  • 你所不知道的 数据在内存中储存 的来龙去脉

            那么好了好了,宝子们,今天给大家介绍一下 “数据在内存中储存” 的来龙去脉,来吧,开始整活!⛳️          一、数据类型的介绍 (1)整型和浮点型:    (2)其他类型:    二、数据在内存中的储存顺序(大端 小端)   (1)引入字节序: 字节序

    2024年02月06日
    浏览(68)
  • 从源码全面解析 dubbo 消费端服务调用的来龙去脉

    👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主 📕系列专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码系列、duubo源码系列 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦

    2024年02月09日
    浏览(37)
  • 《吊打面试官》从根上剖析ReentrantLock的来龙去脉

    🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 🍂 一个人可能走得更快,但是一群人会走得更远! 📝联系方式:wx,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬👀 并发编程 在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官

    2023年04月21日
    浏览(35)
  • 从源码全面解析 dubbo 服务端服务调用的来龙去脉

    👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主 📕系列专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码系列、duubo源码系列 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦

    2024年02月11日
    浏览(33)
  • 【网络间谍篇】SolarWinds供应链攻击事件的来龙去脉

    2020年11月底,FireEye的审查员在内部安全日志审计中发现一条安全警告:一位员工注册了一个新的手机号码接收双因素认证验证码。然而据该员工反馈,这段时间并未在系统中注册新的手机号码,FireEye 迅速组织团队开始彻查。 2020年12月13日,FireEye发布了关于SolarWinds供应链攻

    2024年02月07日
    浏览(41)
  • 一文理清相机内参和外参矩阵的来龙去脉 -- review向

    Auther:SeaHIRobot date: 2023-05-03 最近在做一门课程的项目,在pybullet中复现GGCNN的机械臂视觉抓取的深度学习网络。在搭建仿真环境时,又回到了绕不开的相机内参和外参。借此机会对相机内参外参这一套进行一个review,对这个问题进行一个逻辑梳理。 因此本文不建议纯小白阅读

    2024年02月04日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包