https为什么能保证安全性使用说明_https指南攻略

http传输如下:此时信息是明文传输,如果信息被人截获,则能看到里面的内容,极不安全那就需要对内容加密,过程如下:浏览器生成一个秘钥浏览器向服务器请求公钥服务器向浏览器发送它的公钥浏览器接收服务器发送的公钥,并使用公钥加密随机生成的对称密钥,发送给服务器服务器接收浏览器发送的数据,用自身私钥,得到对称加密密钥最后,浏览器和服务器可以使用对称密钥加密内容进行通

https为什么能保证安全性使用说明

http传输如下:

https为什么能保证安全性使用说明_https指南攻略

https为什么能保证安全性使用说明_https指南攻略

此时信息是明文传输,如果信息被人截获,则能看到里面的内容,极不安全

那就需要对内容加密,过程如下:

  1. 浏览器生成一个秘钥
  2. 浏览器向服务器请求公钥
  3. 服务器向浏览器发送它的公钥
  4. 浏览器接收服务器发送的公钥,并使用公钥加密随机生成的对称密钥,发送给服务器
  5. 服务器接收浏览器发送的数据,用自身私钥,得到对称加密密钥
  6. 最后,浏览器和服务器可以使用对称密钥加密内容进行通信

但此方案仍会存在安全隐患,在第三步和第四步之间,如果被一个中间人获取到它的公钥,浏览器使用中间人的公钥加密对称密钥,发送给服务器,中间人再次截获数据,获取其中的对称密钥。浏览器和服务器在双方数据都不知情的情况下,数据内容被窥探。

问题的重点在于,第三步浏览器无法得到公钥的来源的合法性,这就需要数字证书了。这就是https的解决方案 
服务端单单发送公钥,而是发送包含公钥的数字证书。 
数字证书由第三方机构颁发,浏览器已经维护了所有知名的第三方机构。

浏览器如何确定公钥的合法性?

  1. 在接收数字证书时,查看证书的有效期
  2. 根据数字证书的第三方机构名称,找到对应的公钥,解密数字签字,得到hash1
  3. 根据服务端网址等信息,使用签名算法,生成hash2
  4. 如果hash1等于hash2,则公钥合法

https为什么能保证安全性使用说明_https指南攻略

公钥和私钥的相关知识 
公钥和私钥是一对密钥对,它们可以互解密。使用公钥加密,私钥解密。能有效保证数据的安全性。但是如果使用私钥加密,公钥解密呢,则可以确定来源的合法性。因为只有知道私钥才能加密,如果我们能使用公钥解密得到正常内容(内容是否正确就是比较hash1和hash2),那么对方一定是拥有私钥的主机,而私钥是由第三方颁发给服务器的,这就是数字签名。

OSI七层 
物理层->数据链路层->网络层->传输层->会话层->表示层->应用层 
https的ssl位于传输层和应用层之间

海计划公众号
(0)
上一篇 2020/03/22 20:50
下一篇 2020/03/22 20:50

您可能感兴趣的内容

  • 用 Mongoose 插件记录Node.js API 日志入门百科_日志入门基础

    介绍随着程序的增长,日志记录成为跟踪所有内容的关键部分。它对于调试目的尤为重要。现在已经有了 npm 的日志记录模块。这些模块可以将日志存储在不同格式或级别的文件中。我们将使用流行的ORM Mongoose 讨论 Node.js Express 程序中的 API 日志记录。那么如何创建一个 Mongoose 插件,以更清洁的方式为你进行记录并简化 API 日

    2020/03/26
  • mustache.js小白攻略_一个简单强大的Javascript模板引擎

    mustache.js小白攻略 官方网址:http://mustache.github.com/ GitHub:https://github.com/janl/mustache.j…

    2020/03/06
  • webpack中loader加载器的使用及原理小白攻略_loader教程视频

    webpack的loaders是一块很重要的组成部分。我们都知道webpack是用于资源打包的,里面的所有资源都是“模块”,内部实现了对模块资源进行加载的机制。但是Webpack本身只能处理 js模块,如果要处理其他类型的文件,就需要使用 loader 进行转换。 Loader 可以理解为是模块和资源的转换器,它本身是一个函数,接受源文件作为参数,返回转换的

    2020/04/06
  • ES6 系列之 defineProperty 与 proxy小白知识_proxy基础教程

    前言我们或多或少都听过“数据绑定”这个词,“数据绑定”的关键在于监听数据的变化,可是对于这样一个对象:var obj = {value: 1},我们该怎么知道 obj 发生了改变呢?definePropetyES5 提供了 Object.defineProperty 方法,该方法可以在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象。语法

    2020/04/03
  • CSS Module基础入门_模块小白指南

    CSS Module产生背景在软件工程里面模块指的是可组合、分解和更换的单元。下面是一张css树,项目里面总的css文件是由一系列小的单元组成,比如下面的reset.css就是一个单元。模块化的概念不光在css里面,在JS里面也是同样适用的,我们把代码按照一定的规则和逻辑拆分,分解成可组合可更换的单元,这样就实现了一个最大限度的代码复用。在css中,代码复用

    2020/03/29
  • Vue中强制组件重新渲染的正确方法教程视频_渲染攻略教程

    有时候,依赖 Vue 响应方式来更新数据是不够的,相反,我们需要手动重新渲染组件来更新数据。或者,我们可能只想抛开当前的DOM,重新开始。那么,如何让Vue以正确的方式重新呈现组件呢?强制 Vue 重新渲染组件的最佳方法是在组件上设置:key。 当我们需要重新渲染组件时,只需更 key 的值,Vue 就会重新渲染组件。这是一个非常简单的解决方案。当然,你可能

    2020/03/20
  • Js中使用innerHTML的缺点是什么?使用指南_缺点小白攻略

    如果在JavaScript中使用innerHTML,缺点是:内容随处可见;不能像“追加到innerHTML”一样使用;即使你使用+ = like“innerHTML = innerHTML +’html’”旧的内容仍然会被html替换;整个innerHTML内容被重新解析并构建成元素,因此它的速度要慢得多;innerHTML不提供验证,因此我们可能会在文档中

    2020/03/30
  • 8种常见SQL错误用法指南攻略_错误小白常识

    前言MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况。阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题。现将《ApsaraDB专家诊断报告》中出现的部分常见SQL

    2020/03/26
  • react-redux 的使用基础指南_react小白攻略

    前言最近在学 React,看到 react-redux 这里,刚开始觉得一脸懵逼,后面通过查阅相关资料和一些对源码的解释,总算有点头绪,今天在这里总结下。类似于 Vue,React 中组件之间的状态管理 第三方包为:react-redux。react-redux 其实是 Redux的官方React绑定库,它能够使你的React组件从Redux store中读

    2020/03/29
  • Vue.js 如何使用 Socket.IO使用攻略_socket基础入门

    在很多需求业务中,都需要浏览器和服务器实时通信来实现功能,比如:扫码登录(扫码后,手机确认登录,PC网页完成登录并跳转)、订单语言提醒等,这些都是建立在两端实时通信的基础上的。对前端而言,来实现浏览器和服务器实时通信,最好的选择就是Socket.IO库,能够快速的实现两端实时通信功能。1、什么是 Socket.IO?Socket.IO是一个WebSocket

    2020/03/26
  • es2020空位合并运算符、可选链接运算符小白帮助_运算符小白帮助

    空位合并运算符 ??由于 JavaScript 的类型时动态的,在分配变量时,我们不得不去记住哪些值会被判断为真,哪些会被判断为假。当我们在创建一个对象时,通常会初始化属性为假的值,比如一个空字符串 或者是 0。设置默认值就会变得很烦人,因为它会覆盖有效值,看下如下 demo,你就会发现这么处理真的很烦人:let person = {profile: {na

    2020/03/20
  • js变量提升的坑入门攻略_变量菜鸟攻略

    变量提升在js函数内部是可以直接修改全局的变量的,个人感觉是不好的设计, 但是确实存在这个概念原理:先查看有没有函数变量bb查看形参有没有bb查看全局有没有bb报错, 找不到bb变量修改函数内部var bb = 1;function foo(cc){var bb = 2; // 这里的bb, 其实是函数的局部变量console.log(cc);
    }foo(b

    2020/03/23
  • RAP入门攻略_一款 Web API管理、拟数据生成器,自动测试框架

    RAP入门攻略 官方网址:http://rap2.taobao.org GitHub:https://github.com/thx/rap2-delos 简介描述:一款 Web A…

    2020/03/06
  • 机器学习建模的几点思考与总结小白知识_机器菜鸟指南

    机器学习现在在很多地方都是十分流行,无论现在的你是否从事建模工作,还是你将来想从事相关工作,对于从业者可以从中看出一些同感与意见,对于未来从业者可以了解这个职业到底是做些什么。话不多说,一个机器学习模型的开发周期一般可以分为:1、业务需求挖掘(Business insight)2、数据搜集处理(Data Curation)3、模型训练开发(Modeling)

    2020/03/24
  • js的Handsontable表格的使用说明,如何增加格子样式菜鸟攻略_表格新手入门

    最近使用到了html和js的表格插件Handsontable,官网地址: https://handsontable.com/ 例子代码如下var hot=new Handsontable(table_div, {data: null,//表格数据 一般是二维数组[[]]colHeaders: true,//显示列头rowHeaders: true,//显示

    2020/04/03
  • 改进用户界面与体验的21种JavaScript和CSS库小白攻略_界面基础入门

    当自己的网站应用流畅运行之后,下一步您就需要让它看起来更美观生动。本文列举了21种实用的JavaScript和CSS库,可帮助您实现更加酷炫的效果。1. Algolia如果您想在自己的网站上添加具有自动完成功能的表单,那么您肯定会用到这个库。由于其精准和快捷的特点,我非常喜欢它带有的地图功能。这个库能够让您在地址区域处添加地图功能,以方面用户搜索位置。2.W

    2020/04/03