区别:HTTP 是明文传输的,容易泄漏信息,所以大多数应用都会升级为 HTTPS

HTTP 底层是用 TCP 传输的,HTTPS 就是在 TCP 和 HTTP 之间加了一层加密和认证的协议,这一层叫做 SSL/TLS。

为什么叫这个名字呢?
因为最早的时候是 SSL 协议,但是后来发现了漏洞,就改为 TLS 协议了,而且 TLS 协议也在不断的升级,从 1.1、1.2 到了现在的 TLS 1.3。

不管叫 SSL 还是叫 TLS,都是指的这一层。
重点:这一层就实现了加密、身份认证,还有防篡改的功能。

什么是加密?
加密很容易理解,就是通过一种加密算法对内容进行处理,生成密文,然后另一端通过解密算法把密文处理成原始内容。

只有加密解密还不够 为了每次都不一样,所以会有密钥的存在

这个密钥是随机生成的,所以只能一端生成以后告诉另一端。
那么问题来了,怎么把这个密钥安全的告诉另一端呢?
这就得用到一种特殊的加密算法 — 非对称加密了。

非对称加密:用一个密钥加密的数据只能另一个密钥解密,这个暴露出去的密钥就叫做公钥,留下的密钥叫做私钥。

前面提到 TLS 层主要是实现了加密、身份认证、防篡改的功能。

加密是用对称加密的方式,用到的密钥通过基于公私钥的非对称加密机制来传递。
那身份认证怎么做呢?
其实也是通过公私钥的机制,刚才提到了公钥加密的内容只能私钥解密,这保证了信息的安全传递。
那反过来,私钥加密的数据,如果用公钥能解开,这不就证明了信息是你传递的么?因为私钥只有你有。
所以,私钥的加密又叫做签名,可以用来做身份的认证

一般是对传输的信息做一次 hash,生成数据指纹,然后用私钥加密这个数据指纹,也就是对它进行签名。
这样数据传递到另一端,用公钥把数据指纹取出来,再对内容做一次 hash,生成一份数据指纹,两者对比一下,如果一样,就说明没有被篡改。
这就是 TLS 层的第三个功能,防篡改,也就是保证数据的完整性。

非对称加密的算法是公开的,你可以生成公私钥,别人也可以,那怎么保证我拿到的公钥是你的呢?

数字证书

现在的问题是怎么验证公钥是某个人的。
如果我有信得过的人,他说这个公钥是那个人的,我就相信。基于这样的信任来验证可以么?
也就是说我信任的人有自己的公私钥,他用私钥对这段信息签名,我收到信息后用他的公钥来解密,发现能解密出其中的信息,说明这是被他签名过的,我就相信我收到的公钥是可靠的。

解决方式是操作系统内置了一批信得过的机构的公钥,经过这些机构签名的,就一定是对方的公钥。
这种信得过的机构叫做 CA(Certification Authority),电子认证机构,经过 CA 认证的公钥和相关信息,就叫做数字证书。

操作系统内置了所有可信的 CA 的证书,也就是 CA 的公钥和相关信息,叫做根证书。

为什么都是三级呢?

因为这样万一中级证书不能信任了,还可以让根证书再找一个中级证书,因为信任根证书,也自然信任这个新的中级证书,但如果根证书直接信任某个网站的证书,万一根证书被攻破不能信任了,那就找不到可以信任的了。
所以,三级证书会更安全一些。

HTTP 与 HTTPS 的理解相关推荐

  1. 【转载】这是我看过最好的对HTTPS的理解

    [转载]这是我看过最好的对HTTPS的理解 首先申明,这篇文章并非原创.而是最近想去研究一下https的原理,所以上网查阅了一大堆资料和文档,其实看来看去都是差不多的,直到发现了这一篇.为作者打个电话 ...

  2. HTTP和HTTPS的理解

    1. HTTP和HTTPS的基本概念 HTTP:是客户端和服务器端用来传递消息的一种网络超文本传输协议,是一个客户端和服务器端请求和应答的标准(TCP). HTTPS:HTTPS协议是由SSL+HTT ...

  3. 实施经验-https证书理解

    文章目录 先从一个需求案例说起 流程梳理 在https协议中是如何使用证书的 概念梳理 openssl参数说明 参考: 先从一个需求案例说起 给甲方的web服务需要使用https,是部署在内网的,连域 ...

  4. 深入理解 Android Https

    前言 大家都知道https相比http增加的是安全性. 怎么增加安全性呢? 就是加密和解密步骤. 下面来详细谈谈对https的理解和在Android中的使用. 两种加密 加密方式分两种,对称加密和非对 ...

  5. 也许,这样理解 HTTPS 更容易!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 翟志军 来源 | showme.codes/2 ...

  6. 轻松理解https,So easy!

    作者:翟志军 https://showme.codes/2017-02-20/understand-https/ 本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这 ...

  7. 也许,这样理解 HTTPS 更容易

    本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于"还原 ...

  8. 也许,这样理解HTTPS更容易

    https://juejin.im/post/5b8367b1e51d453884361fc3 摘要: 本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表H ...

  9. 最深刻最通俗的HTTPS 原理详解,图文并茂

    摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于" ...

最新文章

  1. 【UVA】11992 - Fast Matrix Operations(段树模板)
  2. php通过QQ号获取QQ信息,通过openId能获取到QQ号码吗?
  3. C#装箱和拆箱(值类型和引用类型之间的转换)
  4. mysql维表的代理键字段_mysql多维数据仓库指南--第三篇第12章(2)
  5. win7系统如何开启udma功能
  6. 根据工序画出aoe网_这些金刚网纱窗竟然含“毒”!选错就得病
  7. Idea中上传项目到Github
  8. Unity3D实习生面试题总结-图形学相关
  9. 拓端tecdat|R语言估计获胜概率:模拟分析学生多项选择考试通过概率可视化
  10. python画心形代码大全_七夕 - 程序员表白代码
  11. org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.itheima.
  12. qart 图形二维码 html2canvas下载二维码
  13. 计算机教师的幸福,有关信息技术教师教育感言
  14. 一个关于springboot的junit使用错误,空指针异常
  15. 蒙特卡洛方法的使用:计算pi值与积分计算
  16. Android Launcher3简介
  17. 选调生推荐表计算机水平如何填写,2020广东选调生报考推荐表填写模板
  18. nginx配置的server_name无法访问
  19. Flutter TabBar TabBarView
  20. 注册表禁止修改系统时间

热门文章

  1. 41岁了,该何去何从?
  2. 网易邮箱支持手机收发邮件的服务器,手机如何使用IMAP服务收发网易的邮件
  3. matlab加入混响,基于matlab音乐混响效果实现.pdf
  4. 免费建站?手把手自己从零开始(超详细)
  5. Red Hat Enterprise Linux 7 正式版发布
  6. improve your Github overview page
  7. 任正非、俞敏洪告诫有赞的老板白鸦:你错的离谱
  8. java并行编程_RxJava(十一): 并行编程
  9. 【FPGA学习笔记】Verilog语言的模块化设计
  10. snmptrap 命令解析