大三专科实习第一个月——HTTPS底层原理详解

简介:脱变从现在开始,以上文章讲述的是广度问题接下来方向将是深度的问题。觉得我还可以的可以加群探讨技术QQ群:1076570504 个人学习资料库http://www.aolanghs.com/ 微信公众号搜索【欢少的成长之路】

前言

每次访问一个网站的时候大家对http与htps都不陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:

  1. 什么是SSL TLS HTTPS X.509?
  2. SSL只能用在HTTP上吗?
  3. HTTPS底层原理,对称加密与非对称加密?
  4. CA机构参与与CA伪造?
  5. HTTPS真的安全吗? 模拟如何破解
  6. 301,302,307跳转陷阱?

正文

1.什么是SLL,TSL

SLL数字证书是互联网安全的支柱。
安全套接字层 (SSL) 证书(有时称为数字证书)用于在浏览器或用户计算机与服务器或网站之间建立加密连接。SSL 连接可保护在每次访问(称为会话)期间交换的敏感数据(例如信用卡信息),以防被非授权方拦截。SSL 连接可保护在每次访问(称为会话)期间交换的敏感数据(例如信用卡信息),以防被非授权方拦截。
TSL是SLL的升级版。具体概念大家百度查 找百度百科就好了。我这里只给出干货!

2.通过了以上对协议证书的讲解HTTPS X.509包含了哪些数据?

除了签名外,所有 X.509 证书还包含以下数据:

  1. X.509版本号:指出该证书使用了哪种版本的X.509标准。版本号会影响证书中的一些特定信息。目前的版本是3。
  2. 证书持有人的公钥:包括证书持有人的公钥,算法(指明密钥属于哪种密码系统)的标识符和其他相关的密钥参数。
  3. 证书的序列号:由CA给予每一个证书分配的唯一的数字型编号,当证书被取消时,实际上是将此证书序列号放入由CA签发的CRL中。这也是序列号唯一的原因。
  4. 主题信息:证书持有人唯一的标识符这个名字在Internet上应该是唯一的。DN由很多部分组成,看起来像这样:CN=作者 OU=网络安全部门 O=公司地址 C=哪个国家。这些信息将支出该科目的通用名,组织单位,组织和国家或者证书持有人的姓名,服务处所等信息。
  5. 证书的有效期:证书的起始日期和时间以及终止日期和时间;指明证书在这两个时间内有效。
  6. 认证机构:证书发布者是签发该证书的实体唯一的CA的X.509名字。使用该证书意味着信任签发证书的实体。
  7. 发布者的数字签名:这是使用发布者私钥生成的签名,以确保这个证书在发放之后没用被篡改过。
  8. 签名算法标识符:用来指定CA签署证书时所使用的签名算法。算法标识符用来指定CA签发证书时所使用的公开密钥算法和HASH算法。

3.HTTPS与HTTP请求的区别,以及方式流程!

3A.HTTPS与HTTP的区别

  1. HTTPS请求的是443端口,HTTP请求的是80端口。
  2. HTTP是明文传输的,HTTPS是加密传输的,HTTPS比HTTP传输数据的时候更安全一些!
  3. HTTPS在HTTP上多了 安全套接字协议(SLL)
  4. 互联网应用中HTTP应用于下载文件不需要校验交互的网站,HTTPS应用于与服务端登录的网站,比如登录,支付等!
  5. HTTPS因为在请求前会有校验处理的这一阶段所以速度性能这一块低于HTTP的速度性能。
    在这里插入图片描述

3B.这是我们平时应用的过程中访问的一系列节点,每经过一段都留下了一定的痕迹,所以我们传输的数据如何保证安全呢?第五块给你答案!
在这里插入图片描述

4.有了443端口80端口还有用吗?能改吗?

4A.80端口还是有用的

  1. 80端口只是担任在传输过程中的明文传输,所以浏览器利用443端口校验完成之后还是要回到80端口取一些明文数据的,如果没有80端口,数据是取不到的。
  2. 80端口是网站的默认端口,访问网站的时候可以直接通过域名访问,80端口的网站可以省略不写,但是如果不是80端口的网站访问的时候就要域名+端口号才能访问!(这是硬核 必须遵守)

4B.能改的,但是改了之后就没有用了!

  1. 443端口是HTTPS的专属通道端口,如果改了,协议里的配置就不支持了,所以能改但是改了没有用!(无法使用443端口的功能)
  2. 至于改了https的443端口,网站还能不能我就没有尝试过了。(时间充裕的小哥哥小姐姐尝试过之后能告诉我嘛!)
    在这里插入图片描述

5.客户端请求服务端传输的算法,数据安全吗?

5A.客户端与服务端的传输流程(初级)

  1. 客户端先向443端口请求协商,客户端(浏览器)提交当前支持的加密算法列表
  2. 传输加密算法=>只要安全,不被拦截不就都解决了吗!!!!!!
  3. 服务器收到客户端的请求之后 下发一个加密算法
  4. 客户端收到服务端的加密算法之后 再向80端口请求得到密文,用服务端下发的加密算法.decode(密文)。最后显示在浏览器上

5B.这个时候问题来了 传输的加密算法安全吗?如果被黑客拦截的话岂不是根据这个算法就能破解你传输的数据了吗?下面就带你详解一下真正的底层原理!

5C.摘要算法是什么?

扫描二维码关注公众号,回复: 12441525 查看本文章

举个例子参考百度热搜图:热搜第六的新闻,整个新闻介绍的事情经过详情等等一系列。最后都可以归纳为【央视春晚语言类节目已审定】。所以服务端对数据经过摘要算法之后会出来一段摘要,客户端收到数据后用摘要算法再校验一遍。如果服务端摘要出来的数据跟客户端摘要算法校验的数据是一样的那就说明数据没有被篡改!

5D.签名是什么

通过摘要算法。得到了摘要的这个值就是这个数据的签名

5E.客户端与服务端的传输流程(中级)

  1. 服务端下发的数据包
  2. 通过Hash算法取一个内容的摘要
  3. 通过摘要算法,得到了摘要的值就是这个数据的签名
  4. 在服务端下发的数据包中包含了(原文+摘要+摘要算法)
  5. 客户端接收的时候利用摘要算法对原文再进行一次摘要处理。用客户端摘要的数据与服务端传输过来的摘要数据作一个对比
  6. 如果不同说明被篡改过,如果相同,说明数据未改过
    在这里插入图片描述
    在这里插入图片描述

5F.解决一下5B传输算法的问题

  1. 在客户端与浏览器传输过程中选择的加密算法一定要是通用的加密算法,要不然会出现 浏览器不支持或者服务端不支持的情况。
  2. 在选择通用加密算法的时候可以在算法里加盐(密钥),两个浏览器两个用户请求同一个服务端,盐是不一样的,如果是一样的黑客拦截者拦截一个就等于拦截了所有的请求!
  3. 盐(密钥)再用加密算法加密已经不行了,所以不能再使用对称加密算法加密了,只能使用非对称加密算法加密。
  4. 盐的作用是混合到之前的数据里,让他生成个性化不一样的东西!才能改变加密之后的密文。解密的时候呢 只要有密钥的参与就能解开,密钥要是不对就解不开了。

5G.继续解决5E留下来的新问题!通过摘要算法+签名可以防止篡改保证数据的真伪!那签名就一定是真的吗?

  1. 举个例子:一个出差报销单,上面报销的金额的9个亿。前提是要找老板签字,是不是可以自己签老板的名字达到一个伪造签名的情况呢?
  2. 答案是对的 下面将解决签名真伪的问题!
  3. 有任何不明白的 微信搜【欢少的成长之路】 联系博主1V1语言讲解!

6. 以上解决了防篡改的问题,那签名如何保证真伪呢?

签名的真伪问题暂时遗留一下,跟着我的思路走

算法

  1. 对称加密算法:加密跟解密都是一个算法。比如RSA算法。(对RSA不熟悉的自己补一下,我这里讲的是底层原理我是默认你已经掌握了这些知识了的,这里不是基础干货)
  2. 非对称加密算法:加密跟加密不是一个算法。而且非对称加密算法的私钥是不能传的,一旦传了私钥,黑客拦截者可以利用私钥伪造一切。回到正题!非对称加密算法用私钥生成新的密钥。公钥与私钥配套使用!

流程

  1. 客户端拿着公钥加密数据
  2. 数据变成密文
  3. 服务端(下图的接收者长方形的框子)用私钥解密数据还原
  4. 变成原文
  5. 服务端拿着私钥加密数据
  6. 数据变成密文
  7. 客户端(下图的接收者长方形的框子)用公钥解密还原
  8. 变成原文

讲解一下中间人(黑客拦截者)

  1. 服务端私钥加密的数据传送给客户端的时候,不仅包含数据包内容,还包含了服务端的公钥(这里先记得 下面CA的地方会把上面笼统的讲解一遍,先这样记住,后面会让你恍然开朗的)
  2. 中间的黑客拦截者可以生成一套公钥和私钥。重点是:黑客拦截者的公钥在解服务端的私钥的时候,解开了但是传给客户端的时候,客户端不收,因为客户端是公钥,公钥解公钥是解不开的。所以黑客可以看,但是不能篡改!
    QQ:2773938492

7. 如果黑客拦截者用真的公钥跟服务器通信,假的私钥跟客户端通信。如何解决?

在我们现实生活中,公钥加密,私钥解密,公钥不传的话不就可以了吗?的确是这样的,但是在互联网中做不到!于是就引出了第三方CA。

第三方CA

  1. 第三方CA拿私钥生成对应的公钥。
  2. CA公钥能解CA私钥加密的数据
  3. CA的公钥又是内置在浏览器里的(想看效果的话 查看证书方法
  4. 目前为止CA加密里面套了3层加密第一个是对称加密,第二个是服务端加密,第三个是CA非对称加密

第三方CA加密处理流程

  1. 服务端生成一个公钥
  2. CA用CA的私钥生成一个公钥(内置在浏览器,方法如上)
  3. 再用CA的私钥加密服务器端的公钥最后得到一个密文
  4. CA私钥加密的数据用CA的公钥就能解,浏览器又有内置的CA公钥,传给浏览器之后就ok了。
  5. 有涉及到了公钥传输的问题!如果黑客拦截者取到了CA的公钥,那怎么办?CA是怎么再次处理加密的

8.黑客拦截者如果取到了CA公钥,CA是怎么再次处理加密的?

解决流程

  1. 用CA私钥进行加密的时候掺杂一些因素!
  2. 加密的时候掺杂网站的域名+服务器端公钥的摘要就OK了
  3. 最后加密后生成的密文。
  4. 这个密文里包含摘要,公钥等也就是相当于一个证书了!
  5. 查看证书的可以 查看证书方法

在这里插入图片描述

9.301,302,307陷阱跳转又是什么?

第一次请求浏览器的时候默认是http,也就是302请求,请求完之后会跳转到https界面也就是307(这里我理解的不深待优化)
在这里插入图片描述

微信公众号请求各位小哥哥小姐姐关注

在这里插入图片描述

结尾

小白一枚技术不到位,如有错误请纠正!最后祝愿广大的程序员开发项目的时候少遇到一些BUG。正在学习的小伙伴想跟作者一起探讨交流的请加下面QQ群。

考虑到文章过于庞大,影响读者学习,特此分为多个文章描述,如有不足,敬请谅解!
文章将持续更新,我们下期见!【下期将更新GC垃圾回收机制 QQ群:1076570504 微信公众号搜索【欢少的成长之路】请多多支持!

猜你喜欢

转载自blog.csdn.net/weixin_44907128/article/details/112406137