文章目录

  • 1. 什么是 https
  • 2.为什么要引入https
  • 3.https工作流程
    • 3.1对称加密
    • 3.2非对称加密
    • 3.3引入证书
      • 数据指纹
      • 未使用证书产生的问题
      • 使用证书
  • 4.https传输总体流程

1. 什么是 https

https也是一个应用层协议,是在http协议的基础上引入了一个加密层(SSL/TLS)(我们可以先简单的理解为SSL/TLS提供数据机密性和数据完整性)sll分为两层:1.封装加密解密2.https握手 tls为传输层安全
这里所谓的加密解密的软件层,本质是在用户层

2.为什么要引入https

因为http时明文传输的,但是这样传输,在传输的过程中一旦被第三方截获,就可能造成信息泄露
于是引入了https进一步保护用户的信息安全,我们对传输信息进行加密,在服务器端对密文进行解密即可获取数据

那么我们可能会产生相应的疑问,进行俺安全的本质是什么?我们进行加密处理,但黑客只要花费大量的成本和时间,有足够的算力不也照样可以将信息解密出来的吗?
因为强大的算力是需要成本的,所谓安全的本质:
破解的成本>>(远大于)破解的受益

3.https工作流程

3.1对称加密

对称加密本质上就是通过一个密钥来对信息进行加密和解密,可以是一段数学公式,有各种各样的方法
比如:我们在浏览器端的明文为111,我们使用密钥5,那么密文就是116,我们将密文传输到服务器端后,服务器再使用密钥进行解密,得到111
对称加密的使用效率非常高,因为十分的快捷方便。但是,难道我们进行信息传输时,每台主机上都自带各种各样的密钥吗??如果我们不自带密钥,那密钥又如何发给对面主机呢??

3.2非对称加密

非对称密钥本质上使用两个密钥,一个叫公钥,一个叫私钥
公钥:所有人对公钥都是已知的,大家都可以获取
私钥:只有一个主机,或者少数人知道
公钥和私钥时配对的,最大的缺点就是运算速度很慢
浏览器和客户端在进行数据交换时,浏览器先使用自己的私钥进行加密传输给服务器,服务器在使用公钥解密,服务器给浏览器发送信息时也是同样道理,传输速度慢假如我们暂时忽略
但是!!!这样同样会产生一个问题,由于公钥时所有人已知的,当黑客截取两者传输的密文,并使用公钥进行解密后,再继续发送给接受密文的一份,最终我们还是泄露了信息

3.3引入证书

上述两者的解决方案:引入证书

数据指纹

在描述证书时我们需要先对数据指纹有一定的了解
1.首先在服务器端我们先使用hash算法对原始文本进行数据的部分提取,即提出文本中的部分内容,我们将其称为摘要
2.接着我们再通过特定的加密(md5),形成一段字符串,将其称为数据指纹
3.此时把原始数据发送到对端主机,再使用同样的hash算法对文本进行摘要和加密
4.最后我们再对两个数据指纹进行对比,如果对端主机的文本被修改了,那么两者的数据指纹一定是不相同的

结论:凡是对原始文本做任何修改,在进行摘要形成指纹后,得到的指纹数据,差别会非常大

我们经常听说过一个概念:用户的密码信息是必须经过加密!保存在某一个公司的mysql数据库中
这里是因为当我们输入账号和密码后,会在到公司的数据库之前,先进行md5加密,得到的密码的指纹再插入到数据库中,此时用户的密码只有我们自己知道,公司也不清楚了
登录也是同样,输入和md5后得到的指纹和公司数据库内的对比,如果相同,则成功登录

未使用证书产生的问题

我们可以先思考一下,在进行数据传输时,是只使用非对称加密或对称加密吗?如果是非对称加密,那么这么慢的运算速度又怎么满足用户需求。如果是对称加密,那么双方主机如何互通钥匙,难道每台主机上都自带密钥吗,但这样资源消耗不是很大吗,而且产家凭什么要自带你的密钥?

所以最好的方法是第一次使用非对称加密向对端主机传输对称密钥,这样接下来的通信就可以使用对称密钥了
可是这样我们就产生了一个巨大的问题,那么一开始服务器的公钥如何传给客户端呢??
下面可以画个图

从上面图中我们很容易看出先使用非对称加密的问题

使用证书

想要保证安全,所以我们需要确认对方发来的公钥是合法的—>确认对方的主机server是合法的—>有权威机构对网站或者服务器进行合法认证(颁发证书,CA认证)

注意!!!
我们有两个问题:
1.你的证书是否是合法的?
client只要能够用CA的公钥成功解密,证书就是合法的!
2.如何证明你的证书没有被篡改过?
通过对比原文摘要和指纹解密后的携带的摘要是否相等,来判定是否被篡改过

过程:
1.server需要先向CA机构申请证书,该server满足条件后,机构会颁发证书
2.CA机构具有自己独立的私钥和公钥
3.证书里面包含各种信息:时间,颁发机构等(这些不重要),形成的文本
4.对该证书进行hash形成摘要
5.再使用CA私钥进行加密,形成指纹
6.再将指纹添加到证书的文本后,此时对证书添加了防篡改的数据签名
7.然后client获得到该证书(此时是进行明文传输),接着再使用CA机构的公钥进行解密,获得摘要,同时自己也对证书的内容进行hash形成摘要
注!!如果此时有第三方获取证书再修改证书内容时,client可以通过对比摘要而发现内容报错,同样第三方使用公钥解密修改内容时,由于没有私钥重新加密,而client不会接受(因为client只会使用CA机构的公钥进行解密,即使第三方使用自己的公钥和私钥加密后,也不会被接受)
为什么携带了指纹的证书,根本就不怕被第三方修改呢?
根本原因是,任何第三方,都没曾经形成指纹的时候,CA的私钥!!!
在client认证阶段,client只会使用CA的公钥来进行证书认证,不相信任何人的其他公钥信息!

我们是什么时候将公钥写入进证书内的呢?
在申请认证证书的时候,我们会将server的公钥交给CA机构,CA机构会将包括公钥的文本进行hash的

这时候可能会有同学会想,如果有第三方自己申请了真的证书后,以自己证书的公钥发送给client怎么办呢?
证书内部涵盖了域名(发给了哪个网站),如果第三方使用自己的证书后,那么我们客户端就一下发现,我想访问的是b站的网址,但为什么给我证书的是百度的网址呢?此时客户端就发现问题,终止通信了

最后我们会产生一个问题,客户端是如何得知CA的公钥呢??
操作系统以及浏览器出厂的时候,内置了各种权威的根认证机构的各种证书(公钥)

4.https传输总体流程

1.服务器先把自己网站的公钥和各种一系列的信息发给具有全权威的第三方权威机构,
2.第三方权威机构使用密钥进行加密后形成证书再还给网站,
3.此时服务器将证书发送给客户端,客户端使用用第三方机构的公钥进行解密,重点:并且把证书内的各种信息进行对比(比如网址,假如我向b站发送请求,结果发给我证书的是c站,此时停止访问),
4.当client认证过服务器的证书后,才会相信他发来的公钥
5.成功后,客户端自主生成一个对称密钥,然后使用服务器的公钥对其进行加密发送给服务器
6.服务器使用私钥解密后便得到了对称密钥,此时双方便可以“安全”的进行通信了(网络上没有绝对的安全)

这里我们可以知道传输时使用了
一套非对称公钥密钥:CA的,用来进行合法认证
一套非对称公钥密钥:server,用来进行对称密钥协商的
一套对称密钥:用来server和client的通信

以下链接关于http的哦: http的讲解.
感兴趣的小伙伴可以看一下哦!!

超详细易理解的HTTPS(易上手哦)相关推荐

  1. 让别人和自己看懂自己的程序代码?一文掌握Java单行多行、文档注释以及注解(Annotation)超详细的理解使用,IDEA注释注解快捷键和模板,提高程序代码更有可读性

    文章目录 单行和多行注释 文档注释(Java特有) Annotation(注解)的理解 常见的Annotation示例 IDEA注释注解快捷键及模板 自定义 Annotation JDK 中的元注解 ...

  2. Vue指令超详细演示理解

    一:插值表达式 将data中定义的数据显示到模板上. 在vue中{{ }}语法,叫做:插值表达式,大白话就是输出{{ }}中的表达式的值的语法. 把{{ }} 理解为一个占位符(一个坑), {{ ms ...

  3. 短视频入门,第一步应该如何做?超详细,3分钟学会轻松上手

    短视频越来越火爆,从兴起到深耕内容变现,短视频阵营在不断扩大. 在自媒体时代,让一切想法成为可能,让很多想做却做不敢的东西成为现实,越来越多的年轻人通过短视频平台展现自己的魅力,并且开始打造属于自己的 ...

  4. Docker02 狂神Docker视频学习笔记 :【狂神说Java 哔哩哔哩】Docker最新超详细版教程通俗易懂

    目录 0. 视频源 0. 学习网址 基础篇 1. Docker概述 1.1 Docker为什么出现? 1.2 Docker历史 1.3 Docker能干什么 2. Docker安装 2.1 Docke ...

  5. RouterOS 设置PPPOE Server让用户通过拨号才能上网 教程(超详细)

    根据PPPOE Server让用户通过拨号才能上网拓扑图对RouterOS做如下设置. 大家能看这篇文章,证明大家网络技术水平已经超越入门级,为了节省读者阅读时间,这里就不讲基础性的知识,比如:固定I ...

  6. RouterOS 配置VLAN教程(超详细)

    根据VLAN拓扑图需求对RouterOS做如下设置. 大家能看这篇文章,证明大家网络技术水平已经超越入门级,为了节省读者阅读时间,这里就不讲基础性的知识,比如:固定IP接入.动态IP接入.宽带拨号接入 ...

  7. RouterOS 建立PPTP Server教程(超详细)

    根据PPTP拓扑图需求对RouterOS做如下设置. 大家能看这篇文章,证明大家网络技术水平已经超越入门级,为了节省读者阅读时间,这里就不讲基础性的知识,比如:固定IP接入.动态IP接入.宽带拨号接入 ...

  8. STM32实现按键有限状态机(超详细,易移植)

    STM32实现按键有限状态机(超详细,易移植) 一.状态机 简而言之,状态机是使不同状态之间的改变以及状态时产生的相应动作的一种机制. 1.1状态机的四要素 现态:状态机当前状态. 触发条件:改变当前 ...

  9. DM数据库体系结构(易理解版)

    DM数据库体系结构(易理解版) 一.DM逻辑存储结构 1.1各类名词解释 1.2逻辑结构介绍 二.DM物理存储结构 2.1物理存储结构介绍 2.2配置文件 2.3控制文件 2.4数据文件 2.5其他文 ...

最新文章

  1. 如何安全存储比特币现金(BCH)?
  2. oracle对查询结果求和_某国企Oracle数据库误truncate table恢复案例
  3. setGeometry
  4. 腾讯天衍实验室招聘科研实习生
  5. Spring Data JPA简单学习
  6. python学习之路(17)
  7. Windows Presentation Foundation 开始介绍
  8. 最小值最大化问题(贪心系列)
  9. 医疗机构做直播前的预告应该怎么做?
  10. 【工作提效】PLSQL使用技巧
  11. c语言计算火车运行图调整暂停发售,详解铁路12306列车运行图调整,暂停发售
  12. 哈佛为什么群星闪耀?
  13. TJA1403状态模式
  14. unity5.6.5_5.6现在可用并完成了Unity 5周期
  15. 儿童节html5小游戏,六一儿童节游戏大全,六一儿童节游戏有哪些
  16. Linux查询IP失败
  17. 新能源汽车——动力电池
  18. Hydra 6.4.xx,Hydra程序框架
  19. [转]明朝出了个张居正 作者:秋风浩荡 -3
  20. php将json转化成数组,php如何把json转换成数组

热门文章

  1. android 蓝牙发送失败怎么办,【报Bug】蓝牙模块CC2640R2F 安卓发送数据包第二次发送不成功{code:10007,message:property not support}...
  2. android:手机与BLE-CC41-A蓝牙模块通信
  3. 七牛云陈超受邀出席杭州西商大会,共话数字时代未来
  4. ORACLE DUL 工具使用方法介绍
  5. 我是如何做技术分享的 ?
  6. 行测-言语理解选词填空必备词语汇总
  7. 【数据结构-树】哈夫曼树及其应用
  8. 宣传片拍摄制作,后期剪辑师的重要性
  9. 教你怎样用Python进行语音识别!非常精准!
  10. QTableView 例三(代理)