JavaEE: HTTPS的魅力与优势揭秘
文章目录
- HTTPS
- HTTPS 是什么
- HTTPS 基本工作过程
- Fiddle 等抓包工具,为啥能解析 HTTPS 的数据?
HTTPS
HTTPS 是什么
HTTPS 是一个应用层协议,是在 HTTP 协议的基础上引入了一个加密层.
几个核心概念:
- 明文: 要传输的原始数据.
- 密文: 把明文进行加密之后得到一个让别人不能理解的数据.
- 加密: 明文 -> 密文.
- 解密: 密文 -> 明文.
- 秘钥: 进行加密和解密的重要数据/辅助工具.
两类加密算法:
- 对称加密: 加密和解密都使用同一个秘钥.
- 非对称加密: 是一对秘钥(从数学角度生成的一对数) A 和 B.
使用 A 加密,就使用 B 解密.
使用 B 加密,就使用 A 解密.
HTTPS 基本工作过程
HTTPS 只是在 HTTP 的基础上引入了加密机制.
通过 HTTP 进行传输:
可以看到,如果黑客入侵了路由器,那么黑客就可以对你的数据进行抓包,从而知道你传输了什么数据,甚至进一步的修改这里的数据.
很明显,这样的传输是不安全的.
为了解决上述问题:
-
引入对称加密
引入对称加密之后,即使数据被黑客截获,但是由于黑客不知道秘钥是啥,因此就无法解密,从而保证了数据安全.但实际上,事情没这么简单,我们知道,服务器在同一时刻会给多个客户端提供服务.这么多客户端,每个人用到秘钥必须是不同的(如果是相同的,那么秘钥也能被黑客拿到了~),因此服务器就需要维护每个客户端和每个秘钥之间的关联关系.这是一个麻烦的事情.
-
传输对称秘钥
有一个比较理想的做法,就是在客户端和服务器建立连接的时候,双方协商确定这次的秘钥是啥.
但是如果直接把秘钥明文传输,那么黑客也就知道了,因此秘钥的传输必须加密传输.
-
引入非对称加密
我们可以通过 非对称加密 来对 对称秘钥 进行加密.非对称加密,存在的目的不是取代对称加密,而是起到一个辅助对称加密的作用.
非对称加密只用来加密传输对称密钥.
因为非对称加密的运算开销比较大,很消耗性能~非对称加密,涉及到一对秘钥,公钥和私钥.
公钥随便公开(人人都知道),只要把私钥保护好.
客户端通过公钥加密 对称密钥,因为黑客没有私钥,所以无法解密.这样数据就安全了…吗?
-
中间人攻击
实际上,上述流程存在严重缺陷.黑客只需要让他的设备, 在客户端面前假扮服务器,在服务器面前假扮客户端.这样也能够获取到你的数据!!
-
引入证书
为了避免中间人攻击,于是引入了证书机制~出现中间人攻击问题的关键,在于客户端不知道自己拿到的公钥是不是正确的、合理的,不知道是不是黑客伪造的公钥.
此处,就需要引入第三方公证机构.
如果你想要搭建服务器,使用 HTTPS 就需要在公证机构这里申请证书(电子的,一串数据)
申请的时候,就需要提交一些资料(网站的域名,营业执照,备案号等等)CA认证_百度百科
这个证书包含以下信息:
- 证书发布机构
- 证书有效期
- 公钥
- 证书所有者
- 签名
- …
服务器申请到证书之后.后续客户端从服务器拿公钥,就不只是拿公钥,而是拿整个证书.
客户端拿到证书之后,就可以凭借证书中的签名,来对证书的合法性进行验证.客户端验证数字签名:
-
客户端把证书的各个字段,再算一次校验和,得到 checksum1
-
客户端使用公证机构的公钥,对数字签名进行解密,得到 checksum2
-
对比 checksum1 和 checksum2
如果相等,则视为当前证书的各个字段,就是和服务器发出来的证书是一模一样的,此时就可以认为这是合法证书.
如果不相等,意味着证书上的内容被黑客篡改过了,此时浏览器就会弹出警告页面来提示用户.到这里,你可能想问一个问题: 黑客可不可以篡改数据后,同时更新数字签名,让数字签名解密出来的 checksum2, 和篡改过的 checksum1 一致呢??
答: 这在理论上不可行! 黑客篡改了数据之后,要想重新生成数字签名,需要使用公证机构的私钥来加密(这个私钥,不是一般的黑客能拿到的).黑客如果自己生成一个私钥呢?
答: 这个时候客户端拿着公正机构的公钥,解密不了黑客的私钥,此时客户端解密出错,也可以认为是证书有问题,也会弹出大大的窗口~
再来想另一个问题: 客户端如何确定自己手里的公证机构的公钥是正确的,不是黑客伪造的呢?
答: 这个东西不是通过网络获取的,而是操作系统内置的.黑客难以下手.
Fiddle 等抓包工具,为啥能解析 HTTPS 的数据?
要想解析 HTTPS 的数据,你得拿到对称秘钥,才能够对数据解密.
你使用 Fiddle 的时候,Fiddle 就在对你进行中间人攻击(在开启 HTTPS 选项的时候,弹出来一个框,是否要信任 Fiddle 提供的证书,点击 Yes,表示你允许fiddle对你进行攻击了~).
更具体点:
最后来一道经典面试题:
你在浏览器输入 url 之后,到最终展示出页面为止,这个过程计算机都做了哪些事情?
本文到这里就结束啦~
相关文章:

JavaEE: HTTPS的魅力与优势揭秘
文章目录 HTTPSHTTPS 是什么HTTPS 基本工作过程Fiddle 等抓包工具,为啥能解析 HTTPS 的数据? HTTPS HTTPS 是什么 HTTPS 是一个应用层协议,是在 HTTP 协议的基础上引入了一个加密层. 几个核心概念: 明文: 要传输的原始数据.密文: 把明文进行加密之后得到一个让别人不能理解…...

软件设计师——系统基础开发
📔个人主页📚:秋邱-CSDN博客☀️专属专栏✨:软考——软件设计师🏅往期回顾🏆:软件设计师——信息安全🌟其他专栏🌟:C语言_秋邱 一、软件工程概述 1.1、考…...

架构设计笔记-7-系统架构设计基础知识
目录 知识要点 单选 案例分析 1.质量属性 / 管道过滤器 / 数据仓库风格 2.面向对象风格 / 控制环路风格 3.软件架构风格 / 架构风格选择 4.体系结构方案对比 5.面向对象风格 / 基于规则风格 6.解释器风格 / 管道过滤器风格 7.面向对象风格 / 解释器风格 8.软件架构复…...

跨平台应用程序本地化过程的特点
跨平台应用程序本地化不仅仅是将单词从一种语言翻译成另一种语言。这是关于调整应用程序,使其无缝融入全球用户的不同文化和语言环境,无论他们使用的是哪种设备或平台。这个过程对于跨平台应用程序来说尤其复杂,它们需要在多个操作系统和设备…...
C++面试速通宝典——9
170. 简述数组和指针的区别? 答:数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。 1. 修改内容上的区别 char a[] “hello”; a[0] ‘X’; char * p …...
阿里巴巴商品详情API返回值:电商行业发展的新动力
阿里巴巴的商品详情API在电商行业中扮演着至关重要的角色,它不仅为商家和消费者提供了丰富的产品信息,还推动了电商行业的进一步发展和创新。通过API接口,开发者可以获取商品的详细信息,如标题、价格、库存、评价等,进…...
php的urlencode和rawurlencode区别
urlencode和rawurlencode都是用于对URL进行编码的函数,但它们在处理方式和应用场景上存在明显的区别。以下是关于这两个函数的详细比较: 一、定义与标准 urlencode:基于rawurlencode标准,但有略微的不同,它定义在rfc…...

LeetCode讲解篇之322. 零钱兑换
文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们可以使用动态规划解决这道题,我们首先定义一个数组,数组中第i个元素表示组成金额 i 的最少硬币个数 我们遍历数组的1 ~ amount号位置,对coins进行遍历,查找选…...

猴子吃桃-C语言
1.问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个…...

【C++】单例模式「详尽版」
欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 什么是单例模式如何实现单例模式饿汉模式和懒汉模式饿汉模式懒汉模式饿汉模式和懒汉模式的优缺点1.饿汉模式的优缺点2.懒汉模式的优缺点 什么是单例模式 C单例模式是一种非常重要的设计模式…...

MongoDB集群模式详解及应用实战
目录 本节课内容: 集群搭建 1.创建3个目录: 2.编辑配置文件 编辑 3.启动: 4.看看: 5.另外,两个如上1,2,3步骤操作 ,但是日志目录,端口什么的需要改一下即可。 …...

接着上一篇stp 实验继续
理论看上一篇,我们直接实验 首先找出root 桥 很明显 sw1 为root 桥,所谓sw1 &a…...

怎么将手机备忘录传送至电脑
在数字化时代,手机备忘录已成为我们生活中不可或缺的一部分。无论是记录购物清单、工作事项,还是灵感闪现的瞬间,手机备忘录都能随时记录下这些宝贵的信息,帮助我们防止遗忘。然而,有时候我们需要将这些备忘录内容转移…...
解决触摸屏屏幕乱动的问题:E: 无法定位软件包 libinput
在 Ubuntu 中,你可能已经有 libinput 库,它通常默认包含在系统中。如果你想使用 libinput 来管理输入设备(例如触摸屏或触摸板),通常不需要安装额外的软件包,而是直接使用系统自带的工具。 不过࿰…...

RISC-V笔记——基础
1. 前言 RISC-V旨在支持广泛的定制和专业化。RISC-V的ISA是由一个基本整型ISA和其它对基本ISA的可选扩展组成。每个整型ISA可以使用一个或多个可选的ISA扩展进行扩展。 基本整型ISA精选了最小的一组指令,这些指令足以为编译器、汇编器、链接器和操作系统提供足够的…...
「Kafka」Kafka消息可靠性和重复消费问题(五)
在 Kafka 中,实现消息的可靠性和避免重复消费是保证数据一致性和系统稳定性的关键。Kafka 提供了多种机制来实现这两个目标。 1. Kafka 消息可靠性 Kafka 的可靠性主要体现在消息的投递和存储上,以确保消息不会丢失。具体来说,有以下几个措…...

现代身份和访问管理 IAM 如何降低风险
您的公司是否仍在使用 1998 年时的身份管理系统?仅凭用户名和密码就能登录本地网络并访问几乎所有资源吗? 虽然大多数企业已经转向现代身份和访问管理(IAM) 平台,但成千上万的企业和其他组织仍然依赖过时的用户名/密码系统。 如果你看一下传…...

2024年江西省职业院校技能大赛(高职组)信息安全管理与评估”赛项竞赛规程
附件 1 2024年江西省职业院校技能大赛(高职组)信息安全管理与评估”赛项竞赛规程附件 1 一、赛项名称 信息安全管理与评估赛 二、竞赛目的 通过赛项检验参赛选手网络组建、按照等保要求加固网络、安全架构、 渗透测试等技术能力,检验参赛队计划组织和团队协作等综合…...
在 Koa 中,中间件函数的参数ctx是什么?
在 Koa 中,ctx 是指 context 对象,它是请求与响应的上下文,封装了 request 和 response。每当 Koa 收到一个 HTTP 请求时,都会为该请求创建一个 ctx 对象,ctx 使开发者可以通过它方便地获取请求信息并设置响应。 ctx …...

在 Gitlab 中使用 ChatGPT 进行 CodeReview
ChatGPT集成Gitlab,实现自动代码审计并进行评论,为软件开发团队提供高效、智能的代码审查解决方案。支持其他模型如通义千问等 自动触发与及时响应:利用Gitlab的Webhook功能,实现代码提交、合并请求和标签创建等事件的自动触发。一…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)
旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据!该数据集源自2025年4月发表于《地理学报》的论文成果…...
ArcPy扩展模块的使用(3)
管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...
ubuntu清理垃圾
windows和ubuntu 双系统,ubuntu 150GB,开发用,基本不装太多软件。但是磁盘基本用完。 1、查看home目录 sudo du -h -d 1 $HOME | grep -v K 上面的命令查看$HOME一级目录大小,发现 .cache 有26GB,.local 有几个GB&am…...