Java HTTP协议(二)--- HTTPS,Tomcat

作者:英雄不问出处~日期:9/30/2025

文章目录

  • HTTPS
    • HTTPS的工作过程
      • 对称加密和非对称加密
        • 中间人攻击
    • HTTPS过程的总结
  • Tomcat
    • Tomcat的作用
    • 静态网页和动态网页

HTTPS

  1. HTTPS主要就是把HTTP进行加密
    明文 + 密钥 -> 密文
    密文 + 密钥 -> 明文
  2. 在密码学中,使用密钥进行加密,有两种主要的方式
    1.对称加密。加密和解密,使用的密钥是同一个密钥

设密钥为key
明文 + key -> 密文
密文 + key -> 明文
加密和解密这里是数学上的问题

2.非对称加密,有两个密钥(一对)
这两个密钥,一个称为公钥,一个称为私钥
(公钥就是可以公开的,私钥就是自己藏好的)

明文 + 公钥 -> 密文
密文 + 私钥 -> 明文

明文 + 私钥 -> 密文
密文 + 公钥 -> 明文

用一个钥匙加密,就用另一个钥匙解密

举个例子:

在这里插入图片描述

HTTPS的工作过程

  1. 目标:针对HTTP这里的header和body进行加密

对称加密和非对称加密

1.先引入对称加密

在这里插入图片描述
上面的模型存在一个重要的问题。服务器不是只和一个客户端通信,而是和很多客户端通信。
这些客户端使用的对称密钥是相同的吗?
很明显,必须要求每个客户端的密钥都是不同的,彼此之间才不知道对方的密钥是啥

如果都是相同的话,那么黑客搞一个客户端服务器的请求,把你的密钥获取到,这些数据不都全都知道了吗
在这里插入图片描述
问题:
在这里插入图片描述
在这里插入图片描述
针对以上情况就,如何让密钥更安全地到达服务器呢???
需要针对秘钥进行加密
那是否要再搞一个密钥2,使用密钥2对上面的密钥进行加密呢?
(此时,还要想办法把秘钥2也传输给服务器)无论引入多少个密钥,你套上几层娃,都有泄露的风险,这种方法就不行了

  1. 为了解决上述安全传输秘钥的问题,引入了 非对称加密
    非对称加密中,有一对密钥,公钥和私钥。
    可以使用公钥加密,私钥解密
    或者使用私钥加密,公钥解密

过程:服务器这里有公钥和私钥,把公钥传给客户端,虽然中间可能会被黑客截获公钥,但是黑客没有私钥,是解锁不了的,然后客户端进行对密文,公钥的加密,再发给服务器,黑客还是没有私钥,所以还是解锁不了
在这里插入图片描述
在这里插入图片描述
既然已经引入了非对称加密,为啥还需要引入对称加密呢?
直接使用非对称加密,来完成所有的业务数据的加密传输即可。
进行非对称加密/解密,运算成本是比较高的。运算速度也是比较低的。对称加密,运算成本低,速度快

使用非对称加密,只是用来进行这种关键环节(传输秘钥)(一次性的工作,体积也不大),成本就比较可控。后续要传输大量的业务数据,都使用效率更高的对称加密,是比较好的做法。

如果业务数据都使用非对称加密,整体的传输效率就会大打折扣了。

引入安全性,引入加密,也势必会影响到传输效率,我们也是希望这样的影响能够尽可能降到最低!

中间人攻击

上述对称加密 + 非对称加密过程就是HTTPS基本盘了。但是只有这些是不够的,上述流程中还存在一个严重的漏洞,黑客如果利用好这个漏洞,仍然可以获取到原始的明文数据!!!

举个中间人攻击的例子:
在这里插入图片描述
中间人攻击的过程:
在这里插入图片描述
如何解决上述的中间人攻击呢?
之所以能进行中间人攻击,关键要点在于客户端没有分辨能力。客户端不知道当前这个公钥是不是黑客伪造的!!!

这里的分辨,不能靠自证(谁都说自己是真的)
引入第三方的可以被大家都信任的公证机构,公证机构说这个公钥是正确的,不是伪造的,我们就是可以信任的!!!

基本过程:
在这里插入图片描述
对于证书,数字签名如何加密的理解:
在这里插入图片描述
对校验和进行计算,验证是否是正确的公钥
在这里插入图片描述
本来是拿服务器的公钥算的效验和,放入到数字签名中,如果黑客替换了公钥计算出的效验和,就和客户端通过内置的公证机构的公钥进行解密拿到效验和,就不一样了,那么就不是原始的公钥了

黑客无法直接替换公钥:
在这里插入图片描述
黑客可以直接重新计算一个数字签名,可以吗?

在这里插入图片描述
黑客是否可以自己也申请一个证书,完全替换掉,服务器的证书呢???
这是行不通的,申请证书,需要提交资料。其中就有网站的主域名,认证机构自然会认证这个域名是否是你所有的了(难道你可以拿着别人的域名说是自己的吗)

HTTPS过程的总结

面试中经典的面试题
https加密:
(1) 对称加密,加密业务数据
(2) 非对称加密,加密对称密钥
(3) 中间人攻击
(4) 使用证书,来验证服务器的公钥

这些相结合,就保证了https的安全性

在这里插入图片描述

Tomcat

  1. Tomcat:HTTP服务器
    使用HTTP进行通信,就需要涉及到HTTP客户端和HTTP服务器

HTTP客户端:浏览器,Postman,爬虫程序
HTTP服务器:可以自己写代码实现(基于 TCP socket)
但是实际上一般来说在开发过程中不需要我们从头开始去写,有一些大佬们,已经写好了现成的http服务器,我们只需要去使用或者基于这些http服务器进行二次开发即可

二次开发:人家的代码已经把如何处理http请求,如何构造http响应都封装好了。我们只需要调用这些api来构造我们的业务逻辑即可

业务逻辑:你开发的网站是干什么的。比如:博客网站,外卖网站,电商网站

  1. Tomcat是Java中最流行的HTTP服务器
    这里贴一个Tomcat的下载教程:下载教程
  2. Tomcat 是一个Java写的http的服务器
    开发网站,就需要涉及到HTTP服务器。
    bin目录下放的是tomcat的一些相关可执行脚本

在这里插入图片描述
启动Tomcat程序:
在这里插入图片描述
Tomcat闪退的原因:

在这里插入图片描述
可以通过日志确认Tomcat是跑起来的,还可以把Tomcat启动之后,就可以通过浏览器来访问tomcat的欢迎页面了
在这里插入图片描述
tomcat的日志,在控制台中,可能是乱码
原因:
Tomcat默认使用的字符集,是utf8
而windows cmd 的字符集是gbk
要么把tomcat改成gbk,要么把cmd改成utf8
在这里插入图片描述
这里就不处理了,后续还会介绍其他使用tomcat的方式,比如把tomcat集成到idea中,或者linux中使用tomcat,这两种后面主要使用的方式不会乱码

  1. conf中放的是tomcat的配置文件
    我们程序员一般都是通过配置文件的方式来进行设置的这些功能(一个程序的功能可能是多种多样的)
    tomcat的配置主要是通过xml的方式来提供的
    在这里插入图片描述
  2. logs,日志,调试一个服务器程序最重要的手段,后续自己写程序的时候,代码中打印的日志,就可以再上述目录中看到
    在这里插入图片描述
    日志和调试器:
    日志,就是通过System.out.println等方式打印的一些字符串
    调试器:打断点,单步执行

调试器不适合给服务器程序使用,给程序打断点,停下来了(服务器就卡着了),此时此刻,其他客户端的请求可能就无法被响应了。经常也涉及到 概率性问题。100个请求,才触发一次的问题。
使用调试器,本质上是:
1.更好地理解程序的实际执行过程
2.更好得关注到某些临时结果(某个变量的中间的值)
这两点都可以通过日志代替
包括一些算法题,也可以使用日志

使用日志的缺点:
使用日志调试,每次添加/改动日志,都需要重新编译运行
如果一次编译需要1个小时呢?
IO多路复用
在这里插入图片描述
6. webapps里面放的就是诺干个webapp(网站)
webapps中,每个目录,都是一个webapp(就包含了一个网站的后端代码和前端代码)
在这里插入图片描述

.war包的生成:
在这里插入图片描述

Tomcat的作用

  1. 通过一个简单的例子,感受一下,tomcat的作用
    在这里插入图片描述
    需要云服务器,大家才能访问我的网页
    在这里插入图片描述
    Tomcat就像是一个底座一样,我们所编写的网站,都是要架到这个底座上,然后才能被外面的用户顺利访问到,Java是这么做的,其他编程语言还有别的玩法

静态网页和动态网页

  1. 刚才只是在tomcat上放了一个静态网页,实际上tomcat还能支持动态网页,这样就有更复杂的逻辑,有功能就更强大的页面
  2. 静态页面:页面内容都是固定的
    比如一个搜索的网页,百度
  3. 动态页面:根据用户输入的内容不同,产生出不同的结果

有明显的输入:
比如在百度搜索两个不同的关键词,得到的页面结果是不同的
虽然内容不同,但是页面结构非常相似。就像一个模子里刻出来的一样

无明显的输入:
有的页面虽然用户没有明显的输入,但是也有差异,也是动态页面
比如B站,主页给你推荐的内容,不同的用户的页面就是不同的。很多网站会根据用户的历史操作,来推测用户的喜好,进一步给用户推荐他感兴趣的内容

什么是Servlet?
在这里插入图片描述


Java HTTP协议(二)--- HTTPS,Tomcat》 是转载文章,点击查看原文


相关推荐


鸿蒙与iOS跨平台开发方案全解析
i建模10/1/2025

本文深度解析鸿蒙与iOS跨平台开发的六大主流方案,从技术特性到实战策略全面对比。重点介绍了华为官方ArkUI-X(支持三端编译、原生集成分布式能力)和腾讯开源Kuikly(基于Kotlin跨平台、优化GC性能)两大方案,并对比了Flutter和React Native等跨端框架的适配成本。文章详细探讨了平台差异适配策略,包括导航交互、推送服务和UI一致性的实现方法,并给出性能优化实践。最后根据场景需求给出选型建议:新项目推荐ArkUI-X,高性能应用选择Kuikly,现有Flutter项目可扩展插件方案。未


AR眼镜在安防领域人脸识别技术方案|阿法龙XR云平台
北京阿法龙科技有限公司2025/10/2

方案基于AR眼镜构建移动安防人脸识别系统,通过端 - 边 - 云协同架构实现实时身份核验,核心内容如下: 数据采集层 采用AR眼镜内置千万像素红外摄像头,支持 1080P@30fps 实时采集,通过畸变校正算法优化鱼眼效应,获取高质量人脸原始数据。 人脸提取层 在 AR 眼镜端部署轻量级人脸检测模型(如 MobileNet-SSD),通过前端人脸抠像技术实现: 基于 MTCNN 算法进行人脸区域快速定位采用自适应阈值分割去除背景干扰通过仿射变换实现人脸姿态归一化(±30° 姿态矫正)输


【1 月最新】前端 100 问:能搞懂 80% 的请把简历给我
程序员依扬2025/10/2

引言 再更新:上微信搜「高级前端面试」小程序,上下班路上刷题,半年突击进大厂! 更新:目前已达到『23K』Star了,谢谢大家的支持,最近折腾了一个博客网站出来,方便大家阅读,后续会有更多内容和更多优化,猛戳这里查看 ------ 以下是正文 ------ 半年时间,几千人参与,精选大厂前端面试高频 100 题,这就是「壹题」。 在 2019 年 1 月 21 日这天,「壹题」项目正式开始,在这之后每个工作日都会出一道高频面试题,主要涵盖阿里、腾讯、头条、百度、网易等大公司和常见题型。得益于大家


PostgreSQL LIMIT 语句详解
lly2024062025/10/2

PostgreSQL LIMIT 语句详解 在数据库操作中,LIMIT 语句是一个非常实用的功能,它允许我们限制查询结果的数量。在 PostgreSQL 中,LIMIT 语句同样发挥着至关重要的作用。本文将详细介绍 PostgreSQL 的 LIMIT 语句,包括其用法、语法以及在实际应用中的注意事项。 1. LIMIT 语句的基本用法 LIMIT 语句通常用于限制查询结果的返回行数。其基本语法如下: SELECT column1, column2, ... FROM table_name WH


Linux--权限
L-n72025/10/4

文章目录 Linux权限的概念Linux权限管理文件访问权限的设置file 指令目录的权限总结 Linux权限的概念 Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情。 超级用户:的命令提示符是“#”,普通用户的命令提示符是“$” 命令:su [用户名] 功能:切换用户。 要从root用户切换到普通用户user,则使用suuser。 要从普通用户user切换到root用户则使用su


岚图汽车 x Apache Doris : 海量车联网数据实时分析实践
SelectDB技术团队2025/10/5

岚图汽车作为东风汽车集团旗下高端智慧新能源品牌,自 2019 年创立以来,以用户型科技企业为定位,构建了覆盖 SUV、MPV、轿车三大品类的产品矩阵。依托国务院国资委管理,世界 500 强东风集团五十多年的造车积淀与全产业链资源,岚图汽车坚持自研,打造了 ESSA 原生智能电动架构、中央集中式 SOA 电子电气架构等核心技术,旗下岚图 FREE+、梦想家、追光等车型凭借高品质与技术创新,成为最快实现累计产量突破 20 万辆的央国企新能源高端品牌。2025 年连续月销量破万,产品出口覆盖超 40


前端读取文件夹并通过 SSH 上传:完整实现方案 ✅
excel2025/10/6

在 Web 应用中,除了单文件上传,很多时候我们还需要用户直接选择整个文件夹,并批量上传到远程服务器。典型场景包括:静态资源部署、文档归档、远程备份等。本文整合了 前端文件夹选择方案(webkitdirectory + File System Access API) 与 Node.js + node-ssh 后端上传,实现端到端的完整流程。 前端部分:选择文件夹并上传 前端的目标是让用户选择目录,遍历其中所有文件,并逐一上传到后端。 方案一:webkitdirectory 这是目前兼容度最好的


基于数据挖掘的在线游戏行为分析预测系统
Python极客之家2025/10/8

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :)  1. 项目简介         随着在线游戏市场的快速增长,了解玩家行为对于提高用户留存率、优化游戏设计和提升用户体验变得至关重要。本项目旨在开发一个基于数据挖掘的在线游戏行为分析预测系统,利用先进的算法对玩家的行为数据进行分析,预测玩家的行为模式,并提供相应的优化建议。         该系统将涵盖数据收集、预处理、特征工程、模型训练、预测和结果展示等多个环节,旨在为游戏开发者和运营团队提供一个全面的玩家行为分析平台


一款由网易出品的免费、低延迟、专业的远程控制软件,支持手机、平板、Mac 、PC、TV 与掌机等多设备远控电脑!
追逐时光者2025/10/9

前言 在多设备协同日益普及的今天,高效、流畅的远程控制已成为工作与生活的刚需。网易出品的这款免费远程控制软件,凭借低延迟、高画质与跨平台兼容性,轻松实现手机、平板、Mac、PC、TV 乃至掌机对电脑的远程操控,让自由办公与畅快娱乐触手可及。 工具介绍 网易UU远程是一款由网易出品的专业远程控制软件。支持手机、平板、Mac 、PC、TV 与掌机等多设备远控电脑,满足远程游戏、办公和协助需求。凭借高速直连和超低延迟,提供流畅的本地操控体验,支持真彩、 HDR 、4K、144 帧画面显示,支持远程开


Go语言实战案例——进阶与部署篇:使用Docker部署Go服务
程序员爱钓鱼2025/10/11

在现代软件开发中,应用的可移植性和环境一致性至关重要。无论是在开发环境、测试环境还是生产环境,我们都希望 Go 项目能够快速部署、稳定运行。而 Docker 正是实现这一目标的关键工具。 本文将带你从零开始,实战演示如何使用 Docker 构建并部署一个 Go Web 服务。通过这个案例,你将学会将 Go 应用打包成轻量级容器镜像,并在任何地方一键运行。 一 为什么使用 Docker 部署 Go 服务 在未使用 Docker 之前,部署 Go 项目通常需要以下步骤: 1 安装 Go 环境 2

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0