HTTPS相关安全知识(CA证书校验,DDOS)

大家好,我的浏览器输入url之后按回车发生了什么这篇文章中将到其相关的知识,然后上篇给大家写了一份HTTPS原理的知识,相信大家对HTTPS原理有了一些了解了,那么接下来我会来写在使用HTTPS当中为什么说他是相对安全的,然后他中间又有什么不安全性

首先给大家将到的是CA证书的校验

那么浏览器是怎么校验证书的呢?为了让大家能明白的更好我会利用图文的形式给大家讲,所以当客户端接收到这个证书之后:

我先给大家看两张图

这个图片可以看到我们使用HTTPS的时候在URL前有一个🔒的标志
这个图片可以看到我们使用HTTPS的时候在URL前有一个🔒的标志

这个是我们点🔒之后查看的证书
这个是我们点🔒之后查看的证书

  1. 首先需要验证域名、有效期是否正确(我们在上文讲到服务端会返回一个CA认证的证书,其中包含公开密钥加密的公钥、证书的域名范围等信息发送给客户端)这个时候我们就可以验证这个返回的证书,一般证书分三种认证的等级,首先是域名认证,这个是等级比较低的,然后是公司认证以及组织认证(这个一般会有一些组织的信息 )

  2. 然后判断这个证书的来源是否合法,证书的验证一般是需要根据证书的信任链的,就是说最下面的证书需要上层证书来判断这个证书是可信的。从上图证书中我们可以看到我们的子证书(github.com)是最下面的,然后他是由他的上级证书(DigiCert SHA2 Extended Validation Server CA )---- 这个就是我们上面说到的组织认证(Extended/Organization Validation),这是由DigiCert公司颁发的,然后这个上级证书又是由DigiCert公司的根证书颁发的,一般我们对证书来源的认证会一层一层的往上找,直到找到根证书,然后对这个根证书判断(因为我们的系统中和浏览器中一般在系统安装和浏览器升级的时候都会把他们对应信任的证书写入----注:一般Chrome是默认跟随系统,而Firefox是使用浏览器的)

  3. 判断证书是否被篡改,这个一般需要到发送请求到发布CA证书的CA服务器进行对证书的判断

  4. 判断证书是否已吊销

一般通过上面的步骤之后,浏览器就判断证书是可信的,然后就会取证书中包含的公开加密的公钥来对之后生成的随机数加密,以上就是我们的证书判断的环节 (注:我们一般在用CURL的时候可以切换证书信任)


接下来就是我们的中间人攻击了,这个分两种:SSL劫持SSL剥离,这里我们先讲SSL劫持:

SSL劫持原理:主要的就是第三方会先把自己接到发请求方和接收方之间,然后通过自己伪造的证书先模拟成接收方来和发请求方交换数据,然后再模拟自己为发请求方与接收方进行数据交互,下面给大家图文说明

在这里插入图片描述
这个是我从网上找的一张图,我们来模拟一个请求,假设User想发送一个请求给Server,然后中间被Hacker劫持了,这个时候Hacker会把自己变成伪Server,和User进行交互,也就是我们的HTTPS原理中讲到的

步骤:

  1. 首先User发送Client Hello给Hacker

  2. Hacker接收到就返回证书给User

  3. User接收到证书然后判断证书(注:这种方法必须是浏览器已经把Hacker的证书信任),然后浏览器会把自己的随机数发给Hacker,同时会把数据发送给Hacker

  4. Hacker接收到这些后就会把自己伪装成一个伪User,通过同样的HTTPS原理和Server交换数据

  5. 最后把Server返回的数据在转给User,整个过程和User与Server直接交互是一样的

所以说我们自己对证书的信任是需要有保护的,一般SSL劫持容易被用于使用者在自己的浏览器等地方安装了未被权威CA认证的证书,所以这个时候权威CA的重要性可想而至。

为什么说权威CA认证的就安全呢?

一般这些能颁发权威CA证书的公司都是被大家认可的,他们不会把自己的公开密钥中的私钥给别人,所以一般别人很难把用于生成之后数据交互的共享密钥拿到,所以一般使用HTTPS来数据交互是安全的(注:也是是绝对安全,除非CA认证机构把私钥给了别人或你自己的浏览器中安装了自己写的或非权威认证的证书)


在我们的大多数网站中,一般都是可支持HTTP和HTTPS的,所有有的时候在用户输入HTTP取访问网站的时候就可以被劫持,监听(这个就是我们的SSL剥离),然后第三方人员可以通过攻击DNS响应来做到中间人攻击,所以这个时候就有了一种HTTP Strict Transport Security的技术,这种技术就是服务端在返回的报文中会加一个Strict-Transport-Security的返回头,我们还是拿github的图来看

在这里插入图片描述

其实这样做了大家会想,那我如果是第一次请求呢?我要等服务端的返回才能知道之后的请求用什么,但是我第一次请求就被劫持了呢?这个时候HSTS Preload List这样的一个东西就可以处理了,这个是浏览器在请求的时候会带一个网站域名的列表,在这个列表里的网站在请求的时候会强制用HTTPS

大家如果看不太懂的话可以先看我的上一篇文章HTTPS原理

我的下一篇文章**事件循环和执行上下文**

大家有什么知识是想学的也可以评论,我会给大家出一些文章来讲这些知识,因为现在比较流行大前端,所以很多的知识都会去追求原理,而不仅仅是之前的会写会做就性,除了之前的浏览器中输入url之后浏览器干了什么里面写到的内容,我还会插一些js的基础知识,一般会讲一些大家平时不太注意到的但是有时会坑到大家的知识,以及会写一些VUE相关的源码理解和思路,也欢迎大家给我建议。

以上的文章如有写的不好的地方也感谢大家指出来,我们共同进步,知识就是用来共享的,在写完这篇HTTPS原理以及HTTPS安全知识之后我会写一个HTTP协议的文章,预计会有三到四篇来讲HTTP协议,然后会写TCP/IP协议,在把上面的这些写完之后我会总和上面的网络协议给大家写一篇计算机网络相关的知识的总览,帮助大家学习计算机网络知识。

在整个浏览器中输入url之后浏览器干了什么系列知识讲完之后我会结合上面的知识给大家写一篇前端优化的知识,会主要讲上面写到的知识如何优化

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值