系列文章目录

如何使用代码来构造HTTP请求?_crazy_xieyi的博客-CSDN博客

HTTP协议中常见的状态码及其含义_crazy_xieyi的博客-CSDN博客

HTTP协议中的“报头”(header)和 “正文“ (body)详解_crazy_xieyi的博客-CSDN博客

GET和POST有什么区别?_crazy_xieyi的博客-CSDN博客

HTTP协议格式、URL格式及URL encode_crazy_xieyi的博客-CSDN博客

Fiddler抓包:下载、安装及使用_crazy_xieyi的博客-CSDN博客


文章目录

  • 前言
  • 一、对称加密
  • 二、非对称加密
  • 三、引入证书
  • 总结HTTPS的传输过程
  • HTTPS传输就一定能够保证安全吗?

前言

HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层。
因为HTTP 协议内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。比如:“运营商劫持”。
不止运营商可以劫持, 其他的 黑客 也可以用类似的手段进行劫持, 来窃取用户隐私信息, 或者篡改内容。所以在互联网上 明文传输是比较危险的事情!!!那么 HTTPS 就是在 HTTP 的基础上进行了加密, 进一步的来保证用户的信息安全。

这种前面带了锁头图标的就是https。如果前面显示“不安全”字样就代表是http。


一、对称加密

对称加密其实就是通过 同一个 "密钥 " , 把明文加密成密文, 并且也能把密文解密成明文。
对称加密里面最关键的就是这个秘钥,客户端和服务器需要先约定好这个秘钥具体是啥。如果是客服端生成了秘钥,那么就需要通过网络去告知服务器这个秘钥是什么。那么就会引入一个问题,因为秘钥本身是在网络上进行明文传输的,那么就容易被黑客获取,一旦被黑客获取了,那么后续的加密也就失去了意义。
其实对于这个问题也是有解决办法的,在很久之前的时候,可以让客户端和服务器同时生成一样的秘钥,比如很久之前去银行开通网银账户的时候,就会送你一个U盾。
但是在今天,这种方式显然已经过时了,那么正确的手段就是对这个对称秘钥也进行加密。接下来就会引入非对称加密对对称秘钥进行加密。

二、非对称加密

非对称加密要用到两个密钥, 一个叫做 "公钥", 一个叫做 "私钥"。一个网站,生成一对公钥和私钥,把公钥给公开出去,自己只保留私钥。
客户端在本地生成对称密钥, 通过公钥加密, 发送给服务器。由于中间的网络设备没有私钥, 即使截获了数据, 也无法还原出内部的原文, 也就无法获取到对称密钥。服务器通过私钥解密, 还原出客户端发送的对称密钥. 并且使用这个对称密钥加密给客户端返回的响应数据。后续客户端和服务器的通信都只用对称加密即可。

那么就会有两个问题:

一:既然都有非对称加密了,为什么还需要使用对称加密?为什么不直接用非对称秘钥进行加密就可以了?
其实使用对称加密,成本是比较低的,因为机器的资源消耗比较少,速度就很快。非对称加密,成本比对称加密高很多,机器资源消耗比较多,速度也就慢了很多。所以对于明文就用对称加密,对对称秘钥再使用非对称加密,这样就高效了很多。
二:如何保证客户端获取的公钥是真实可靠的?而不是黑客伪造的?
其实任何人都可以生成一对公钥和私钥,网站服务器能够生成,当然黑客一样能够生成,其实黑客就可以利用这一点,来一招“狸猫换太子”,这也叫“ 中间人攻击”!

针对这一问题,肯定有反制的办法。通过引入证书,就可以反制黑客伪造公钥这件事了。

客户端和服务器在连接的时候,客户端就不是简单的去索要公钥了,而是直接索要一个“证书”,公钥就包含在这个证书里面。这个证书不是服务器自己生成的,而是第三方机构颁发的,客户端在拿到证书之后,就可以根据证书中所提供的信息,去第三方机构进行认证,来校验证书是否合法!如果证书合法,就可以信任其中的公钥。(服务器开发者在搭建服务器的时候,要去第三方机构进行认证,来申请证书)

三、引入证书

在客户端和服务器刚一建立连接的时候, 服务器给客户端返回一个 证书。这个证书包含了刚才的公钥, 也包含了网站的身份信息。
当客户端获取到这个证书之后, 会对证书进行校验(防止证书是伪造的)。
完整流程:

总结HTTPS的传输过程

HTTPS 工作过程中涉及到的密钥有三组:
第一组 ( 非对称加密 ): 用于校验证书是否被篡改。
第二组 ( 非对称加密 ): 用于协商生成对称加密的密钥。
第三组 ( 对称加密 ): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密。
其实一切的关键都是围绕这个对称加密的密钥。其他的机制都是辅助这个密钥工作的。
第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器。
第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥。
HTTPS传输过程总结:
1.客户端先从服务器获取到证书,证书中包含了公钥。
2.客户端对证书进行校验。
3.客户端生成一个对称秘钥,使用公钥对对称秘钥加密并发送给服务器。
4.服务器收到这个请求之后,使用私钥解密,得到对称秘钥。
5.客户端发出后续请求,后续请求都是用对称秘钥加密。
6.服务器收到的数据也是用对称秘钥进行解密。

HTTPS传输就一定能够保证安全吗?

黑客在进行中间人攻击的时候,是可以伪造一个证书的,那么浏览器就会对拿到的证书进行校验,如果校验不通过,浏览器会有错误提示:类似“该网站证书非法,继续访问存在安全风险!”的提示字样。同时浏览器上面还会有一个点击按钮“继续访问”,如果点击了“继续访问”,进入了链接,那么用户的安全就不能得到保证了!

再牛逼的技术也抵不住犯傻的用户啊!!!

HTTPS 的传输过程相关推荐

  1. HTTPS加密传输过程

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

  2. 关于Https的加密过程理解

    内容目录 Http缺点 HTTPS简介 证书是怎么来的? 客户端获取证书如何解析? Http缺点 直接明文传输,容易被窃听 不校验身份,容易被伪装 内容可能不完整,容易被篡改 HTTPS简介 HTTP ...

  3. 【计算机网络】HTTP 与 HTTPS ( HTTP 在网络各个层级的传输过程 | HTTPS 工作流程 | HTTPS 弊端 )

    文章目录 一.HTTP 在网络各个层级的传输过程 二.HTTPS 工作流程 1.中间人篡改服务器下发的数字证书 2.中间人冒充服务器端 三.HTTPS 弊端 一.HTTP 在网络各个层级的传输过程 应 ...

  4. https协议原理过程

    https协议原理过程 https概念 https是基于安全目的的Http通道,其安全基础由SSL层来保证.最初由netscape公司研发,主要提供了通讯双方的身份认证和加密通信方法.现在广泛应用于互 ...

  5. 【SRIO】3、RapidIO串行物理层的包传输过程

    目录 一.引言 二.串行物理层的PCS层与PMA层 2.1 PCS层的功能 2.2 PMA层的功能 2.3 术语定义 2.3 8B/10B传输码 2.4 字符和码组记号 2.5 运行不一致(Runni ...

  6. 逆向推导https的设计过程

    我们先不去探究ssl的实现原理,我们先从设计者的角度去思考如何去建立一个安全的传输通道 从第一个消息开始 客户端A向服务端B发送一条消息,这个消息可能会被拦截以及篡改,我们如何做到A发送给B的数据包, ...

  7. https安全传输协议

    由于HTTP协议通信的不安全性,所以人们为了防止信息在传输过程中遭到泄漏或者篡改,就想出来对传输通道进行加密的方式https. https是一种加密的超文本传输协议,它与HTTP在协议差异在于对数据传 ...

  8. Nginx 配置 SSL 及 HTTPS 协议通信过程

    一.前言 基础知识 1.1 公钥密码体制(public-key cryptography) 公钥密码体制分为三个部分,公钥.私钥.加密解密算法,它的加密解密过程如下: 加密:通过加密算法和公钥对内容( ...

  9. TCP/IP协议十二:关于MAC地址和IP地址在传输过程中变与不变的问题

    TCP/IP协议十二:关于MAC地址和IP地址在传输过程中变与不变的问题 1. 结论 2. 原因: 3. 例子 4. 参考: 1. 结论 mac变,ip不变. mac地址在同一个广播域传输过程中是不变 ...

最新文章

  1. 参考用-惯性导航系统简介(转载)
  2. 图像处理前沿技术_深入浅出人工智能前沿技术—机器视觉检测,看清人类智慧工业...
  3. 三大高通量测序平台芯片通量对比图(请把手机横过来看))
  4. anaconda moviepy_Anaconda的安装和Jupyter Notebook使用
  5. php框架中间件,【框架十】Coder PHP Framework 中间件
  6. JSP程序设计习题4-3.6
  7. python调用高德接口获取国内行政区经纬度数据
  8. 我的VSTO之路(三):Word基本知识
  9. net proxy FortiGate 200A / SANGFOR / Blue Coat
  10. No OraCM running
  11. 家用无线路由器的选购技巧
  12. 手机上PDF怎么编辑?这个办公APP必须装!
  13. 关于Django字段类型中 blank和null的区别
  14. [CTSC2016]时空旅行(斜率优化+线段树分治)
  15. vscode键位错乱
  16. 【AV1 编码器研究一】aomenc.exe命令行参数简析
  17. 正反向隔离装置(网闸)
  18. 为什么正态分布如此常见?
  19. Altera PDN 设计和 FPGA 收发器性能
  20. PMI-ACP练习题(12)

热门文章

  1. Linux利用FTP服务传输文件(山有木兮木有枝,心悦君兮君不知)
  2. ZipArchive压缩文件,文件夹以及解压文件和文件夹
  3. java小练习(人品计算机)
  4. Engineer-Exec02-参考解析
  5. ICLR 2023 | 达摩院开源轻量人脸检测DamoFD
  6. 海马优化器(Sea-Horse Optimizer, SHO)
  7. MVC、MVP、MVVM三种区别及适用场合
  8. 对象背后的那只看不见的手——软件世界的有神论
  9. IAR for 8051 开发环境的安装
  10. 两天血赚1w7,我搬了一趟家,却险些面临甲醛超标的问题,说说这魔幻的两天...