HTTP 与 HTTPS 的理解
区别: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 的理解相关推荐
- 【转载】这是我看过最好的对HTTPS的理解
[转载]这是我看过最好的对HTTPS的理解 首先申明,这篇文章并非原创.而是最近想去研究一下https的原理,所以上网查阅了一大堆资料和文档,其实看来看去都是差不多的,直到发现了这一篇.为作者打个电话 ...
- HTTP和HTTPS的理解
1. HTTP和HTTPS的基本概念 HTTP:是客户端和服务器端用来传递消息的一种网络超文本传输协议,是一个客户端和服务器端请求和应答的标准(TCP). HTTPS:HTTPS协议是由SSL+HTT ...
- 实施经验-https证书理解
文章目录 先从一个需求案例说起 流程梳理 在https协议中是如何使用证书的 概念梳理 openssl参数说明 参考: 先从一个需求案例说起 给甲方的web服务需要使用https,是部署在内网的,连域 ...
- 深入理解 Android Https
前言 大家都知道https相比http增加的是安全性. 怎么增加安全性呢? 就是加密和解密步骤. 下面来详细谈谈对https的理解和在Android中的使用. 两种加密 加密方式分两种,对称加密和非对 ...
- 也许,这样理解 HTTPS 更容易!
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 翟志军 来源 | showme.codes/2 ...
- 轻松理解https,So easy!
作者:翟志军 https://showme.codes/2017-02-20/understand-https/ 本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这 ...
- 也许,这样理解 HTTPS 更容易
本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于"还原 ...
- 也许,这样理解HTTPS更容易
https://juejin.im/post/5b8367b1e51d453884361fc3 摘要: 本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表H ...
- 最深刻最通俗的HTTPS 原理详解,图文并茂
摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于" ...
最新文章
- 【UVA】11992 - Fast Matrix Operations(段树模板)
- php通过QQ号获取QQ信息,通过openId能获取到QQ号码吗?
- C#装箱和拆箱(值类型和引用类型之间的转换)
- mysql维表的代理键字段_mysql多维数据仓库指南--第三篇第12章(2)
- win7系统如何开启udma功能
- 根据工序画出aoe网_这些金刚网纱窗竟然含“毒”!选错就得病
- Idea中上传项目到Github
- Unity3D实习生面试题总结-图形学相关
- 拓端tecdat|R语言估计获胜概率:模拟分析学生多项选择考试通过概率可视化
- python画心形代码大全_七夕 - 程序员表白代码
- org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.itheima.
- qart 图形二维码 html2canvas下载二维码
- 计算机教师的幸福,有关信息技术教师教育感言
- 一个关于springboot的junit使用错误,空指针异常
- 蒙特卡洛方法的使用:计算pi值与积分计算
- Android Launcher3简介
- 选调生推荐表计算机水平如何填写,2020广东选调生报考推荐表填写模板
- nginx配置的server_name无法访问
- Flutter TabBar TabBarView
- 注册表禁止修改系统时间