一、HTTPS主干-分支

第一层

第一层,是主干的主干,加密通信就是双方都持有一个对称加密的秘钥,然后就可以安全通信了。

问题就是,无论这个最初的秘钥是由客户端传给服务端,还是服务端传给客户端,都是明文传输,中间人都可以知道。那就让这个过程变成密文就好了呗,而且还得是中间人解不开的密文。

第二层

这才涉及到非对称加密这个事。

非对称加密有两种方式,公钥加密私钥解密,私钥加密公钥解密

服务端把它的公钥发给客户端,然后客户端用公钥把要传给服务端的对称加密的秘钥加密。此时传递的就是加密的数据了,而且只能服务端用私钥才能解开,中间人无法得知。

因为秘钥传输既怕别人看到,也怕别人篡改。但此时的公钥已经不怕别人看到了,看到就看到呗,你知道公钥,也解不开客户端用公钥加密的秘钥。

但是,仍然怕篡改中间人通过篡改,最终可以获得你们的秘钥

怎么防止这个公钥被篡改,就是第三层了。

第三层

服务端给客户端的公钥,怎么防止别人篡改呢?

客户端可以先自己生成一对公私钥,然后把公钥给服务端,服务端用我的公钥给它的公钥加密,这就没法篡改了,甚至中间人连公钥是啥都不知道了,可是客户端给服务端公钥的过程又变成明文了,又容易被篡改,那怎么办呢?

那可以服务端给客户端公钥,然后客户端用这个公钥加密客户端的公钥传给服务端。那服务端给客户端公钥又是明文,又容易被篡改。

那可以...

这你发现了吧,套娃了,永远有那么第一次的明文内容,会被中间人篡改

怎么消除这个第一次明文的尴尬呢?

CA 机构---如同公安局给每一个人发身份证一样,唯一

CA 机构那边也有一套公私钥

服务端把自己的公钥给 CA,让 CA 用 CA 的私钥加密,然后返回加密结果。然后这个加密结果,可以用 CA 的公钥解,谁都可以解开。但是,如果要篡改结果,必须再次用 CA 的私钥加密,可是这个做不到,只要 CA 不是坏蛋即可。

这就做到了第一次的明文传输的公钥,只能被看,无法被篡改

然后客户端用这个公钥,给之后对称加密的秘钥加密,传给服务端,中间人由于不知道服务端私钥,解不开。

于是,客户端和服务端,有了一个中间人不知道的,解不开的对称秘钥。

总结起来就是。

第一层:双方的通信就是简单的对称加密方式通信。

第二层:https 仅仅是解决对称加密的密钥怎么安全传给对方,那就是用非对称加密方式(公钥加密私钥解密:加密)。

第三层:那非对称加密的公钥传递如何防篡改,那就是 CA 机构的非对称加密(私钥加密公钥解密:签名)。

二、HTTPS传输过程

  1. 客户端发起HTTPS请求

    就是用户在浏览器里输入一个https网址,然后连接到server的443端口。

  2. 服务端的配置

    采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访 问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。这套证书其实就是一对公钥和私钥。如果对 公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后 发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

  3. 传送证书

    这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

  4. 客户端解析证书

    这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存 在问题。如果证书没有问题,那么就生成一个随机值。然后用证书对该随机值进行加密。

  5. 传送加密信息

    这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

  6. 服务段解密信息

    服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合 在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

  7. 传输加密后的信息

    这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

  8. 客户端解密信息

    客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。

渗透-02:HTTPS主干-分支和HTTPS传输过程的更多相关文章

  1. 渗透测试中为什么https抓包是明文传输?

    网站用的是https抓包是明文传输,为什么能看到https报文的明文? https其实就是 http + SSL/TLS 两种协议的合体.http协议是应用层协议,而SSL/TLS是传输层协议. 那问 ...

  2. 浅谈HTTPS传输过程

    HTTPS是什么 HTTPS不是一个新的协议,可以理解为是一个HTTP协议的加密"版本"(HTTP+SSL(TLS)).那为什么HTTP协议需要加密,不加密会出现什么问题呢?先来了 ...

  3. HTTPS加密传输过程

    HTTPS加密传输过程 HTTPS全称Hyper Text Transfer Protocol over SecureSocket Layer,是以安全为目标的HTTP通道,在HTTP的基础上通过传输 ...

  4. 操作实践,git本地分支执行rebase,让主干分支记录更简洁

    声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 我们平时在写代码的时候,难免会修修改改,如果团队中每个人的代码提交记录都包含着一堆中间过程,是很不利于团队 ...

  5. 如何申请https证书、搭建https网站

    如何申请https证书.搭建https网站 随着国内搜索引擎巨头百度启用全站https加密服务,全国掀起了网站https加密浪潮.越来越多的站点希望通过部署https证书来解决“第三方”对用户隐私的嗅 ...

  6. HTTPS那个东西(一)-HTTPS原理

    HTTPS那个东西(一) 最近看了<http权威指南>几个章节,对HTTPS随着节,了一些资料,遂打算记录一下心得.写的仓促,肯定有非常多错误的地方,欢迎大家指正. 1.HTTP是什么 那 ...

  7. Https系列之一:https的简单介绍及SSL证书的生成

    Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...

  8. Spring Boot工程支持HTTP和HTTPS,HTTP重定向HTTPS

    本文试图以通俗易通的方式介绍Https的工作原理,不纠结具体的术语,不考证严格的流程.我相信弄懂了原理之后,到了具体操作和实现的时候,方向就不会错,然后条条大路通罗马.阅读文本需要提前大致了解对称加密 ...

  9. HTTPS学习笔记一----HTTPS的基础理论知识

    首先推荐一本书,<HTTP权威指南>我就是看这本书入门的,对http协议有了更好的理解,学习https的理论知识我认为需要了解以下几点,需要一步步的深入学习: 1.HTTPS的基本概念? ...

  10. HTTPS那些事儿(一)-HTTPS原理

    HTTPS那些事儿(一) 近期看了<http权威指南>的几个章节.对HTTPS有了部分了解,同一时候在网上查阅了一些资料,遂打算记录一下心得,写的仓促,肯定有非常多错误的地方.欢迎大家指正 ...

随机推荐

  1. 快速求popcount的和

    前置知识 \(\text{popcount}(n)\) 表示将 \(n\) 转为二进制后的数中 \(1\) 的个数. 结论 \[\sum_{i=1}^{n} \text{ popcount}(i)=\ ...

  2. SSM整合之基础xml文件以及基础理解

    文章目录 前言 什么是SSM框架 实例 pom依赖 Spring 文件配置 最后 展示代码 总结 前言 最近在学习SSM框架,就去找了一些视频来看,写一篇整合的文章,文章包括一些整合的依赖,以及创建的 ...

  3. 【Docker】网络管理

    一.容器默认网络通信 Usage: dockerd [OPTIONS] Options: --icc Enable inter-container communication (default tru ...

  4. php获取未解码之前的原始接口请求参数

    前言 目前的几个项目,业务方基本都使用POST方式请求接口,我们本机磁盘会保留一份请求的原始参数用于请求分析和问题排查使用,一般有问题,也会基于seqid(请求唯一id)捞到日志,copy参数模拟请求 ...

  5. vue 事件中的 .native你搞清楚了吗

    native是什么? .native - 监听组件根元素的原生事件. 主要是给自定义的组件添加原生事件. 官网的解释: 你可能想在某个组件的根元素上监听一个原生事件.可以使用 v-on 的修饰符 .n ...

  6. 2020-11-25:go中,map的底层数据结构是什么?

    福哥答案2020-11-25: 简单回答:hmap映射头.bmap桶.mapextra溢出额外信息 中级回答: // 映射头 type hmap struct { // Note: the forma ...

  7. 2022-06-23:给定一个非负数组,任意选择数字,使累加和最大且为7的倍数,返回最大累加和。 n比较大,10的5次方。 来自美团。3.26笔试。

    2022-06-23:给定一个非负数组,任意选择数字,使累加和最大且为7的倍数,返回最大累加和. n比较大,10的5次方. 来自美团.3.26笔试. 答案2022-06-23: 要i还是不要i,递归. ...

  8. 2021-01-05:mysql的自增id的实现逻辑是什么样子的?

    福哥答案2021-01-05:答案来自这个链接:[ 每日一面 - mysql 的自增 id 的实现逻辑是什么样子的?](https://zhanghaoxin.blog.csdn.net/articl ...

  9. 2021-04-08:给定一个单链表的头节点head,请判断该链表是否为回文结构。

    2021-04-08:给定一个单链表的头节点head,请判断该链表是否为回文结构. 福大大 答案2021-04-08: 1.找中点. 2.按中点切分成两个链表. 3.反转右边链表. 4.相等判断. 5 ...

  10. 【GiraKoo】Git工具使用指南

    Git工具使用指南 Git是一个分布式版本控制工具,可以用于管理代码.本文介绍了如何使用git工具. 1. SVN和Git的区别 1.1 SVN SVN是集中式版本控制工具,所有的代码都存储在一个中央 ...