超详细易理解的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的讲解.
感兴趣的小伙伴可以看一下哦!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值