JavaEE—— HTTP协议和与Tomcat (末篇)

本篇文章,承接前面两篇文章:

在前面的两篇文章中,简单介绍了 什么是 HTTP 协议,介绍了抓包工具,如何构造 HTTP 请求,以及,如何使用第三方工具来简化构造请求的过程。
如果需要了解前面的知识可以通过下面的链接访问前两篇文章。

链接: HTTP协议(初篇)
链接: HTTP协议(中篇)

文章目录

  • 一、介绍 HTTPS
    • 1. 解释为什么会有 HTTPS 的出现
    • 2.解释加密
      • 对称加密
      • 非对称加密
      • 证书
    • 3.总结 HTTPS 的工作过程
  • 二、简单介绍 Tomcat
    • 1. 简单阐述 Tomcat 的下载安装
    • 2.Tomcat 启动
    • 3. 简单部署一个前端页面

一、介绍 HTTPS

什么是 HTTPS?

所谓 HTTPS 也是一个应用层协议。是在 HTTP 协议的基础上引入了一个加密层

1. 解释为什么会有 HTTPS 的出现

对于 HTTP 协议内容都是按照文本的方式进行明文传输的。这样,在传输的过程中,就难免会出现被篡改的情况。

对于上面提到的 “被篡改”,这里就提到曾经 臭名昭著的 “运营商劫持”

解释运营商劫持
在我们还没有使用 HTTPS 的呢个时期,我们要在网上下载一个东西常常会出现这样的情况:
想要下载一个 酷狗音乐,但是在下载完成后,却发现是 360。。。
这就是 “运营商劫持”。
使用画图的方式解释情况大致如下:
在这里插入图片描述
在网络中,明文传输是比较危险的事,对此,为了解决上述的问题,就出现了 HTTPS。

2.解释加密

HTTPS 相较于 HTTP 是在其基础上进行了加密用来保护用户信息安全。

加密, 就是将要传输的信息进行一系列的变换,生成密文。
解密, 就是将密文进行一系列的转换还原为明文。
在这两者之间,往往需要一个中间元素 (类似于密码本) 辅助进行加密解密,这类数据称之为 秘钥

对于加密的方式,大致分为两种,分别为:对称加密非对称加密

对称加密

所谓对称加密,其过程可以形象的表示为下面的形式:
a(明文) + key => b(密文) 加密的过程
b(密文) + key => a(明文) 解密的过程

在这里,同一个秘钥,可以用来加密也可以用来解密。所以称之为 对称密钥

对称加密的安全性前提是,秘钥不可以被黑客知道
简单图示大致如下:
在这里插入图片描述
但是,在这之中,我们需要思考一个问题,这个秘钥,在一开始是不存在的,呢么需要哪一方来生成,并且如何安全的将秘钥传递出去呢?

解释秘钥由哪一方生成

我们要知道,服务器在同一时刻需要为多个客户端提供服务。而每个客户端的秘钥又是不同的。对此,让服务器维护每一个客户端和秘钥之间的关联,是一件非常麻烦的事。

所以,比较理想的方式是, 在客户端和服务器每次建立连接之时,双方协定本次秘钥为什么。(即由哪一方生成都可以)

解释传递密钥时的安全性问题

不难理解,客户端与服务器之间的秘钥传递,很显然是一段 明文传输的过程。此时,也就是黑客最容易入侵获取秘钥的阶段。
简单图示:
在这里插入图片描述

因此,密钥的传输也是需要进行加密的!

对于以上的问题,就引出了加密的另外一种形式,非对称加密

非对称加密

非对称加密就是为了安全的将秘钥传递过去。
在这个过程中需要产生一对秘钥分别为,公钥 和 私钥

解释什么是 公钥 / 私钥

  • 公钥: 顾名思义,就是两台设备之间都会知道的 “秘钥” (一般是由 客户端在加密对称秘钥时 向服务器索取)
  • 秘钥: 顾名思义,就是只有一方知道的 “秘钥” (一般由服务器自己保存,不会向外传递)

使用公钥进行加密,使用私钥进行解密。(这也可以反过来用)
形象的来讲就是:
明文 + 公钥 => 密文
密文 + 私钥 => 明文

图示如下:
在这里插入图片描述

解释公钥和私钥的工作过程

  • 客户端会在本地先生成 对称密钥,通过公钥进行加密,发送给服务器。
  • 中间的网络设备并没有私钥,即使数据被截获也是无法还原出原文的。对此也不会获取到对称密钥
  • 服务器会对获取到的数据进行私钥解密,然后使用对称密钥向客户端返回响应数据
  • 后续只使用对称加密即可,因为只有客户端和服务器之间知道这段秘钥。

思考:
既然这个非对称加密安全了这么多,为什么还要使用对称加密?
答案是很显然的,非对称加密的计算速度很慢,在传输中需要尽可能的提高传输速度。

这里虽然解决了 对称密钥传输的问题,但是新的问题又来了:
客户端如何获取到公钥?
客户端如何确定这个公钥不是黑客伪造的?

这里就引出了新的概念 证书

证书

在介绍证书之前,这里需要先了解一个名词 中间人攻击

解释中间人攻击

这里通过一个简单的例子进行说明:
大家了解过历史可能都知道。
在二战时期,纳粹德国会将被迫投降的苏军进行专门的间谍培训,利用他们回去刺探苏军的情报,但是很显然很多都是放虎归山,石沉大海。
但是,也会有特殊情况,也会有一些士兵返回带回情报。
实际上这些情报,很多其实都是苏联反间谍机构虚构的,而德国军官却常常信以为真。

这里我们我们会出场这几个角色,士兵,苏联情报部,德国军官 A 和 B。

士兵被派遣到苏联地界,与苏联情报部进行联系,获取到苏联将会集中攻击某地的情报。 之后带回到德国前线向此处驻守的两位军官 A 和 B。通报此次苏军行动。
德国军官深信不疑,立即调动军队部署。
殊不知此时的苏军已经从他们的薄弱部分穿插到他们背后了。等待他们的,只有被消灭。

上面的例子中,很明显,这个士兵所充当的位置就是 中间人
下面我在通过图示解释在传输中,中间人攻击其中的运转:

在这里插入图片描述

  • 对于客户端:客户端并不知道 pub 2 是否真的是从服务器发送过来的公钥。直接就使用了。

  • 对于中间人:黑客通过自己伪造的一对秘钥,通过 pir2 对前面客户端的信息进行解密,就获取到了对称密钥。
    再将 对称密钥 使用得到的 pub1 进行加密,然后在传递回给服务器。

  • 对于服务器:此时服务器收到的仍然是 pub1 加密的对称密钥,使用 pir1 进行解密。之后的交互传输都会使用这个对称密钥。(但是,此时的对称密钥已经泄露了)。

引用证书和说明证书的作用

在上面的解释中,要解决中间人攻击的关键,主要是让客户端要能够辨别,这里的 公钥 是否是服务器的正确的公钥

对此,引入 “证书” 就可也解决这个问题。(本质上,证书也就是一个第三方的公证机构)

在网站的建立之初,就需要去专门的认真机构进行证书的申请。通过之后,就会有一个证书。
此时,服务器生成的公钥,就会被包含在这个证书之中了

在引入证书之后,客户端和服务器之间的联系建立,大致如下图所示:
在这里插入图片描述

  • 关于证书:证书由三部分组成,分别是:字段,公钥,签名

解释客户端如何通过签名判断判断证书有效
首先,根据签名。
客户端使用认证机构提供的公钥解密,会得到一个 hash1 值。
第二,根据字段。
客户端使用同样的 hash 算法,针对其余字段再次计算一次 hash 值,得到 hash2 ,此时,当 hash1 = hash2 时,就表明这个证书是没有被篡改的。

  • 对于客户端:在拿到证书后,就会对证书进行校验,证书上会带有特殊字段,叫做证书签名

  • 对于黑客
    是否可以替换证书提供的公钥?
    答案是不行的,一旦替换了公钥,就意味着客户端计算出来的 hash 值是与签名对应的 hash 值是无法对应的,客户端就会知道无效。
    是否可以生成一个假签名?
    答案也是不行的,黑客并不知道认证机构的 私钥,即使算好了一个篡改后的 hash 值,也是无法加密生成签名的。

到此,也就解决了中间人攻击的问题。
其中,客户端和服务器之间的交流也就是在一个比较安全的情况下进行了。

3.总结 HTTPS 的工作过程

HTTPS 的工作过程大致分为三组。

第一组(非对称加密):用来校验证书是否完整。
的二组(非对称加密):通过 私钥 - 公钥 的方式来传递出后续传输信息的 对称密钥。
第三组(对称加密):客户端和服务器的后续传输通过这个对称密钥进行

二、简单介绍 Tomcat

Tomcat 翻译过来就是 “汤姆猫”,看到这个名字,我们最能想到的就是呢个有名的 “动画片”。

但是在 Java 中,这同样是一个非常有名的一个东西。
Tomcat 是一个基于 Java 实现的一个开源免费,也是被广泛运用的 HTTP 服务器。

1. 简单阐述 Tomcat 的下载安装

  • 首先,我们可以直接在 浏览器中搜索 Tomcat,但是要注意其中的域名,如图:
    在这里插入图片描述
  • 第二,点击进入,如图:
    在这里插入图片描述
    之后下载安装即可。

2.Tomcat 启动

要启动 Tomcat 首先需要找到对应的安装位置,打开后整体的文件内容大致为下图所示:
在这里插入图片描述
点击进入后,找到
在这里插入图片描述
选择合适的程序点击即可。
当在黑框框中出现下图所示,就表示启动成功。
在这里插入图片描述

访问一下 Tomcat 自带的欢迎界面
在这里插入图片描述

3. 简单部署一个前端页面

要部署一个前端页面,就需要将对应的文件放入到合适的位置,如图:
在这里插入图片描述

在这里插入图片描述
目前,只是简单的介绍了 Tomcat 的前端文件的部署,在后面的文章中,将会进一步说明其用法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/499026.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法---动态规划练习-6(地下城游戏)

地下城游戏 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址:点这里 2. 讲解算法原理 首先,定义一个二维数组 dp,其中 dp[i][j] 表示从位置 (i, j) 开始到达终点时的最低健康点数。 初始化数组 dp 的边界条件: 对…

AI赋能微服务:Spring Boot与机器学习驱动的未来应用开发

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟。提供嵌入式方向的学习指导、简历面…

实践笔记-harbor搭建(版本:2.9.0)

harbor搭建 1.下载安装包(版本:2.9.0)2.修改配置文件3.安装4.访问harbor5.可能用得上的命令: 环境:centos7 1.下载安装包(版本:2.9.0) 网盘资源:https://pan.baidu.com/s/1fcoJIa4x…

Vue中的一些指令与计算方法

语法 插值语法 HTML的双标签内容中使用,在{{}}之内书写JS代码 属性语法 1.v-bind或: 2.:属性名"值"或v-bind"值" 事件语法 v-on或 v-on:事件名"方法名"或事件名"方法名" 选项 选项:可选的配置项——官方…

vue3封装Element动态表单组件

1. 封装组件DymanicForm.vue 使用component实现动态组件组件不能直接使用字符串传入,所以根据传入的组件名称找到对应的组件校验规则,可使用rule传入自定义规则,也可以使用封装好的基本规则 示例中使用了checkRequired暴露重置方法和校验方法…

奥比中光Astra SDK相机SDK openni相机成像原理

目录 1.1 成像原理简介 1.1.1 结构光 1.1.2 双目视觉 1.1.3 光飞行时间TOF​ 2.使用手册 参考网址 2.1 产品集成设计 2.2 SDK介绍与使用 2.3 常用API介绍 OPENNI API 2 OpenNI类(OpenNI.h) 1.1 成像原理简介 1.1.1 结构光 结构光&#xff0…

Elastic 8.13:Elastic AI 助手中 Amazon Bedrock 的正式发布 (GA) 用于可观测性

作者:来自 Elastic Brian Bergholm 今天,我们很高兴地宣布 Elastic 8.13 的正式发布。 有什么新特性? 8.13 版本的三个最重要的组件包括 Elastic AI 助手中 Amazon Bedrock 支持的正式发布 (general availability - GA),新的向量…

小狐狸JSON-RPC:钱包连接,断开连接,监听地址改变

detect-metamask 创建连接,并监听钱包切换 一、连接钱包,切换地址(监听地址切换),断开连接 使用npm安装 metamask/detect-provider在您的项目目录中: npm i metamask/detect-providerimport detectEthereu…

【MySQL】5.2MySQL高级语句与sql语句

模板 test、class、class0 mysql> select * from test; -------------------------------- | idcard | name | age | hobbid | -------------------------------- | 01 | lizi | 18 | guangjie | | 02 | monor | 22 | zhaijia | | 03 | sansan | …

对form表单对象中数组中的字段进行校验的方法

当对form表单中&#xff0c;数组readings中的字段进行校验时&#xff0c;prop和rules绑定要写成动态的&#xff0c;如下代码 <div v-for"(item,index) in form.readings"><el-form-item label"上次读数" > <!--prop"scds"-->…

Pytorch入门实战 P4-猴痘图片,精确度提升

目录 一、前言&#xff1a; 二、前期准备&#xff1a; 1、设备查看 2、导入收集到的数据集 3、数据预处理 4、划分数据集&#xff08;8:2&#xff09; 5、加载数据集 三、搭建神经网络 四、训练模型 1、设置超参数 2、编写训练函数 3、编写测试函数 4、正式训练 …

LabVIEW智能降噪系统

LabVIEW智能降噪系统 随着噪声污染问题的日益严重&#xff0c;寻找有效的降噪技术变得尤为关键。介绍了一种基于LabVIEW平台开发的智能降噪系统&#xff0c;该系统能够实时采集环境噪声&#xff0c;并通过先进的信号处理技术实现主动降噪&#xff0c;从而有效改善生活和工作环…

kubernetes(K8S)学习(五):K8S进阶(Lifecycle......偏理论)

K8S进阶&#xff08;Lifecycle......偏理论&#xff09; 一、Pod进阶学习之路1.1 Lifecycle1.2 重启策略1.3 静态Pod1.4 健康检查1.5 ConfigMap1.6 Secret1.7 指定Pod所运行的Node 二、Controller进阶学习之路2.1 Job & CronJob2.2 StatefulSet2.3 DaemonSet2.4 Horizontal…

vue3 渲染一个后端返回的图片字段渲染、table表格内放置图片

一、后端直接返回图片url 当图片字段接口直接返回的是图片url&#xff0c;可以直接放到img标签上 <img v-if"thumbLoader" class"r-image-loader-thumb" :src"resUrl" /> 二、当图片字段接口直接返回的是图片Id 那么就需要去拼一下图片…

改Jenkins版本号

旧服务器迁移到新&#xff0c;打包版本号更新 Jenkins.instance.getItemByFullName("双机热备").updateNextBuildNumber(65)

知识蒸馏到底怎么蒸?

1知识蒸馏简介 定义&#xff1a;知识蒸馏代表将知识从大模型向小模型传输的过程。 作用&#xff1a;可以用于模型压缩和训练加速 手段。 2基于响应的知识&#xff08;Response-Based Knowledge&#xff09; 基于响应的知识一般指的是神经元的响应&#xff0c;即教师模型的最…

前端学习<二>CSS基础——09-CSS案例讲解:博雅互动

前言 CSS已经学了一些基础内容了&#xff0c;我们来讲解一个小案例吧。以博雅互动的官网首页举例。 版心 首页的版心如下&#xff1a; 这里我们要普及一个概念&#xff0c;叫“版心”。版心是页面中主要内容所在的区域。 比如说&#xff0c;网站左上角的logo&#xff0c;设计…

IDEA2021.1.2破解无限试用30天破解IDEA

安装包下载 IDEA安装包&#xff1a;Other Versions - IntelliJ IDEA破解包下载&#xff1a;文件 密码:c033 开始激活 IDEA 2021.1.3 运行, 中间会先弹出一个注册框&#xff0c;我们勾选 Evaluate for free, 点击 Evaluate&#xff0c; 先试用30天: 注意&#xff0c;如果没有…

Tomcat项目创建 以及 在IDEA当中集成Tomcat

一: 有关Tomcat的WEB项目创建 TOMCAT项目的创建有两种方式, 第一种是利用骨架进行创建, 第二种是利用填补进行相应的创建, 不适用骨架进行创建 ,在这里主要聊第二种 (使用IDEA版本为2023) 1. 创建MAVEN项目, 非骨架形式 2.在相应的pom文件当中设置打包方式 为 war包的打包形…

LeetCode:70爬楼梯 C语言

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2&#x…