【Java EE初阶二十二】https的简单理解

1. 初识https

         当前网络上,主要都是 HTTPS 了,很少能见到 HTTP.实际上 HTTPS 也是基于 HTTP.只不过 HTTPS 在 HTTP 的基础之上, 引入了"加密"机制;引入 HTTPS 防止你的数据被黑客篡改 ;

        HTTPS 就是一个重要的保护措施.之所以能够安全, 最关键的在于"加密”;

1.1 关于明文和密文

        明文:一般来说传递的原始全部信息称为明文;

        密文:通过一些手段对明文进行特殊处理获取到的真正想传输的内容信息为密文;

        一般来说,明文 + 密钥 => 密文;密文 + 密钥 => 明文;

1,2 秘钥加密方式

        在密码学中,使用密钥加密, 有两种主要的方式.

1、对称加密.

        加密和解密,使用的密钥是同一个密钥
        设密钥 为 key,则
        明文 + key => 密文;密文 + key =>明文

2、非对称加密.

        有两个密钥(一对),这俩密钥,一个称为“公钥”,一个称为"私钥"(公钥就是可以公开的,私钥就是自己藏好的),则规则如下:

        明文 + 公钥 => 密文,密文 + 私钥 =>明文或者

        明文 + 私钥 =>密文,密文 + 公钥 =>明文;

        主要就是用一个钥匙加密,就用另一个钥匙解密;

2. https的工作过程

        https工作目标是针对 HTTP 这里的 header 和 body 进行加密;

2.1 先引入对称加密

        详细的请求图解如下所示:

        

        上面的模型存在一个重要问题,服务器不是只和一个客户端通信, 而是和很多客户端通信,
这些客户端使用的对称密钥必须要求每个客户端的密钥都不相同,彼此之间才不能知道对方的密钥的;所以服务器就需要记录不同客户端的秘钥,如下所示:

        如上图所示,此时要求每个客户端对应的密钥都不同.现在就需要每个客户端,在和服务器建立连接的时候,就把密钥给生成出来 (涉及到一些随机数机制在里面,保证每个客广端生成的密钥都不同),客户端再把自己的密钥通过网络传输给服务器;

        秘钥被黑客截获之后的原理如下所示:

2.2 非对称加密

        为了解决上述安全传输密钥的问题,引入了"非对称加密”,非对称加密中,有一对密钥.公钥和私钥,可以使用公钥加密,私钥解密,或者使用私钥加密,公钥解密;其工作原理如下所示:

        既然已经引入了非对称加密,为啥还需要引入对称加密呢?
        一般来说直接使用非对称加密,来完成所有业务数据的加密传输即可,进行非对称加密/解密,运算成本是比较高的.运算速度也是比较低的.
        对称加密,运算成本低, 速度快.
        使用非对称加密,只是用来进行这种关键环节 (传输密钥)(一次性的工作,体积也不大),成本就比较可控
        后续要传输大量的业务数据,都使用效率更高的对称加密,比较友好的做法.如果业务数据都使用非对称加密,整体的传输效率就会大打折扣了. 

        上述的对称加密+非对称加密过程就是https的基本盘,但是上述的流程中还存在一个严重的问题,就是黑客如果利用好这个漏洞,任然可以获取到明文数据;

2.3 中间人攻击

        关于中间设备的入侵消息流程如下所示:

        q:如何解决上述 中间人攻击问题呢?

        a:之所以能进行中间人攻击,关键要点在于客户端没有"分辨能力,客户端不知道当前这个公钥是不是黑客伪造的!这里的"分辨”不能靠"自证”(谁都是说自己是真的),所以最好的方法就是引入第三方可以被大家都信任的"公证机构",公证机构说这个公钥是正确的,不是被伪造的,我们就是可以信任的;

2.4 使用证书,校验服务器的公钥

        关于公正机构何生成数字签名的流程如下图所示:

        如上图所示,客户端拿到了证书,也就拿到了证书中的公钥,客户端就需要验证这个公钥是否是服务器最初的公钥(是否是被黑客篡改了??),这个过程, 就称为"证书的校验";
        如何进行校验?

        其核心机制,就是"数字签名"=> 被加密后的校验和,(拿着数据的每个字节,带入公式,就能算出一个结果数字,称为校验和),此时, 客户端拿到了数字签名,就可以通过系统内置的公正机构的公钥,进行解密之后得到最初的校验和;客户端再重新计算一遍这里的校验和, 和解密出来的校验和进行对比,如果校验和一致,就可以认为证书没有被篡改过,公钥就是可信的 (服务器原始的公钥)

        故此在上述机制下,黑客就无法对证书内容进行篡改了.即使篡改,也很容易被发现.当黑客收到证书之后,如果直接修改里面的公钥,替换成自己的,客户端在进行证书校验的时候,就会发现校验和不一致了 ,随意客户端就可以认为证书是篡改过了.(客户端这边往往就会弹出一些对话框来警告用户,存在安全风险)

        q:那么黑客替换公钥之后,能否自己替换掉数字签名,自己计算一个呢?

        a:不能的!校验和好算,针对校验和加密,需要使用公证机构的私钥才能进行的,黑客没有这个私钥.如果黑客拿自己的私钥加密,客户端也就无法使用公证机构的公钥解密了,就有可能遇到这种情况,公证机构的公钥是客户端系统自带的,黑客也无法替换,

        结合上述过程,证书就是可信的,通过了校验,就说明公钥就是服务器原始的公钥了

3. Tomcat

        tomcat是HTTP 服务器,使用 HTTP 进行通信,就需要涉及到 HTTP 客户端 和 HTTP 服务器

        HTTP 客户端:浏览器,Postman,爬虫程序等;

        HTTP 服务器:已经有现成的 http 服务器, 咱们只需要去使用或者基于这些 http 服务器进行二次开发即可,人家的代码已经把如何处理 http 请求,如何构造 http 响应都封装好了,咱们只需要调用这些 api 来构造咱们的业务逻辑即可(即自己制作一个相应的网站);

3.1 下载tomact

        1、进入官网

        2、选择 Tomcat8 系列版本

        3、下载压缩包

        4、直接使用即可

3.2 认识tomcat

        Tomcat 是一个 Java 写的 http 服务器,Tomcat 是一个基于 java 实现的"绿色软件",只要解压缩,就可以使用.(需要提前安装好 JDK);下面认识一下关于tomcat文件夹里的相关文件及其作用;

1、bin目录

        双击上述 startup.bat,就可以启动 tomcat,最终的 tomcat 就是一个控制台程序了故服务器开发的话,服务器基本上都是控制台程序,(一般来说都是不带界面的)

        关于tomcat启动失败的几个原因如下所示:

把 startup.bat 拖到 cmd 中运行,如果闪退,大概率 cmd 中能显示出出错信息

        1)、端口被占用了

        (已经启动 tomcat, 再启动第二个),或者电脑上可能装了其他的程序也占用了 8080(像Windows自带的 HTTP 服务器, lS)

        2)、环境变量问题

         (可能是 tomcat 找不到 jdk, 也可能是 tomcat 找不到自己所在的目录),提示是缺哪个环境变量,就配置上即可.

        Tomcat 启动成功之后,就可以通过浏览器来访问 tomcat 的欢迎页面.

        

        tomcat 的日志,在控制台中,可能是乱码的,主要原因是Tomcat 默认使用的字符集是 utf8
而 windows cmd 的字符集是 gbk.

2、关于conf

        conf 中放的是 tomcat 的配置文件,一个程序的功能可能是非常丰富的.就需要按需开启这里的某些功能.给程序猿使用的专业程序,一般很少会专门做一个界面,来让大家修改配置,我们一般就都是通过配置文件的方式来进行设置的;

3、关于log

        日志是调试一个服务器程序最重要的手段.我们后续自己写的程序,代码中打印的日志,就可以在上述目录中看到;

        日志,就是通过 System.out.printin 等方式打印的一些字符串.调试程序,就是使用调试器,打断点,单步执行;调试器不适合给服务器程序使用.给程序打个断点,服务器运行到断点,停下来了.(服务器就卡着了)此时此刻,其他客户端的请求可能就无法被响应了;

        使用调试器的本质上是
        1、更好的理解程序的实际执行过程.
        2、更好的关注到某些临时结果(某个变量的中间的值)

        使用日志的缺点:使用日志调试,每一次添加或改动日志,都需要重新编译运行一次,这就会花费很多的时间;

4、关于webapps

        webapps 中,每个目录,都是一个 webapp (就包含了一个网站的后端代码和前端代码);

        这个目录中还能见到 .war 压缩包文件. war 包是使用 tomcat 发布程序的一种方式,写好的一个网站,就可以打包成 war 包,拷贝到 tomcat 的 webapp 里,tomcat 就会自动对 war包 进行解压缩,从而完成网站的部署和加载

        下面通过一个例子来感受一下tomcat:

        如上图所示,这就是 tomcat 的重要作用,可以让浏览器通过网络来访问到一个 html 页面.

        

        而上图所示,则是直接双击打开html页面,这个做法是让浏览器打开一个本地文件
和上面是有本质区别的;

        Tomcat 就像是一个"底座"一样,我们所编写的网站,都是要架到这个底座上,然后才能够被外面的用户顺利访问到;刚才只是在 tomcat 上放了一个简单的"静态网页",实际上 tomcat 还能支持"动态网页”,从而让程序猿写出更复杂的逻辑,功能更强大的页面;

3.3 静态网页和动态网页

        静态页面: 页面内容是固定的,如下图所示:

        动态页面: 根据用户输入的内容不同,产生出不同的结果

        如下图所示:

        

        综上所述,输入不同的内容,得到的页面结果;虽然内容不同,但是页面结构非常相似,简直是一个模子中刻出来"的一样;

        一个静态页面,就是一个单纯的 html;动态页面就要复杂一些,就需要在背后让程序猿来编写一些代码, 来描述一些逻辑,比如bilibili, 输入不同的词, 就需要检索出不同的数据.同时对于不同的用户,也就需要推荐出不同的感兴趣的内容.

        Tomcat 就是可以支持静态页面,也能支持动态页面;(Tomcat 提供了一组 api,封装了 HTTP 协议, 可以让程序猿更方便的去编写动态页面了,这组api被称为servlet

ps:本次的内容就到这里了,如果大家感兴趣的话,就请一键三连哦!!!

        

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

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

相关文章

AI人工智能写作,这5款AI软件帮你解决写作难题

在如今这个信息爆炸的时代,写作已经成为我们生活和工作中必不可少的一部分。但是,对于很多人来说,写作可能是一件挺费劲的事情,需要花费很多时间和精力。不过,幸运的是,随着人工智能技术的不断进步&#xf…

【2024软件测试面试必会技能】Selenium(5):元素定位的介绍及使用

Selenium元素定位介绍: 元素的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的,举例:一个对象就是一个人,我们可以通过身份证号、姓名或者他的住址找到这个人。那么一个web对象也是一样的&#xf…

声反射是如何保护内耳的?

声反射是如何保护内耳的? 反射是人和动物通过中枢神经系统对刺激所产生的规律性反应。 在人耳中也同样存在这样一种反射,叫做“声反射”。当人耳受到足够强度的声刺激时,双耳镫骨肌发生反射性收缩,这就是声反射,又称镫…

Vue3_基础使用_3

今天主要学习的是hooks, vue3的使用比vue2方便很多了,但是呢各个功能块的逻辑有时候还是会缠绕在一起,这个时候使用hooks进行模块化管理开发,说白了就是将每个单独的业务放到自己的.ts中去写,以后修改就找到这个ts 不用到处去翻…

5.【架构师成长之路】职场新人:如何快速变得专业(下)

文章目录 导言一、凡事不苟且二、心态要开放1、勇于承担各种事2、别害怕犯错 本文总结说明 导言 上一篇文章我们讲了,作为新人最重要的事情就是“快速变得专业”。 我们先自问自答了一个问题:“新人为何要快速变得专业?新人难道不能就循序渐…

科技快讯:鸿道Intewell操作系统突破国际垄断,引领工控新革命

科东软件Intewell鸿道工业操作系统,已在多种严苛环境下运行检验,并应用于工业控制、智能制造、汽车电子、轨道交通、能源电力、航天航空等实时性要求极高的领域,历经30年的不懈努力和研发迭代,在功能和性能上可以替代风和VxWorks操…

【论文阅读】【yolo系列】YOLO-Pose的论文阅读

Abstract 我们介绍YOLO-pose,一种无热图联合检测的新方法,基于流行的YOLO目标检测框架的图像二维多人姿态估计。 【现有方法的问题】现有的基于热图的两阶段方法是次优的,因为它们不是端到端可训练的,训练依赖于surrogate L1 loss…

【JVM】计数器引用和可达性分析

📝个人主页:五敷有你 🔥系列专栏:JVM ⛺️稳中求进,晒太阳 C/C的内存管理 在C/C这类没有自动垃圾回收机制的语言中,一个对象如果不再使用,需要手动释放,否则就会出现内存泄漏…

常见消息中间件分享

文章目录 概念核心角色作用&使用场景应用解耦异步通信削峰填谷大数据流处理 使用模型点对点模型发布-订阅模型 常见消息中间件介绍一、kafka二、RabbitMQ三、RocketMQ 比较一、Kafka如何实现高吞吐量二、RocketMQ如何实现事务消息 概念 消息中间件是基于队列与消息传递技术…

猿辅导送给新时代家长的一份教育指南,让孩子“学会学习”

新课标发布以来,各学科综合素养内容占比逐渐提升,成为校内教学考察的新方向,素养教育也成为学校、家长讨论的新话题。论坛上,各领域教育创新者、教育实践者围绕素养教育,探讨了学习本质、学习兴趣、作业问题、厌学情绪…

JAVA并发编程之原子性、可见性与有序性

并发编程-原子性、可见性与有序性 一、CPU的可见性 1.1 缓存一致性问题的出现 CPU处理器在处理速度上,远胜于内存,主内存执行一次内存的读写操作,所需要的时间足够处理器去处理上百条指令。 为了弥补处理器与主内存处理能力之间的差距&am…

2023 re:Invent 用 PartyRock 10 分钟构建你的 AI 应用

前言 一年一度的亚马逊云科技的 re:Invent 可谓是全球云计算、科技圈的狂欢,每次都能带来一些最前沿的方向标,这次也不例外。在看完一些 keynote 和介绍之后,我也去亲自体验了一些最近发布的内容。其中让我感受最深刻的无疑是 PartyRock 了。…

3 Nacos源码下载并集成达梦数据库驱动

1、Nacos源码下载 源码直接下载gitee上的nacos2.2.3,具体链接:Nacos: 概览 欢迎来到 Nacos 的世界! Nacos 致力于帮助您发现、配置和管理微服务 - Gitee.com,具体如下图

在编老师可以有副业吗

许多在编老师或许都会面临这样一个问题:除了教书育人,我是否还能有点别的追求?副业,对于很多人来说是一个增加收入、拓展兴趣的途径,但对于在编老师而言,这个问题却显得有些复杂。 老师这份工作本身就充满…

宋仕强介绍说,萨科微slkor

宋仕强介绍说,萨科微slkor(www.slkoric.com)研制了碳化硅SiC SBD二极管、碳化硅SiC MOSFET管、IGBT管、超快恢复功率二极管等高端产品,萨科微SLKOR还有肖特基二极管、ESD静电保护二极管、TVS瞬态抑制二极管、通用二极管和三极管&a…

0-前置知识

前言 SpringBoot框架在设计之初,为了有更好的兼容性,在不同的运行阶,段提供了非常多的扩展点,可以让程序员根据自己的需求,在整个Spring应用程序运行过程中执行程序员自定义的代码。 ApplicationContextInitializer …

springcloud-网关(gateway)

springcloud-网关(gateway) 概述 \Spring Cloud Gateway旨在提供一种简单而有效的方式来路由到API,并为其提供跨领域的关注,如:安全、监控/指标和容错 常用术语 Route(路由): 网关的基本构件。它由一个ID、一个目的地…

软考 系统分析师系列知识点之企业信息化规划(1)

所属章节: 第7章. 企业信息化战略与实施 第2节. 企业信息化规划 企业信息化建设是一项长期而艰巨的任务,不可能在短时间内完成。因此,企业信息化建设必然会分解成各个相对独立的项目,在不同时期分别实施,从而建立多个…

1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK

1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK 全部学习汇总: g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 上面是涉及到的源代码,而这次需要分析的就是78、79行的两个中断。首先,需要确认NVIC_SYSPRI2寄存器的作用。 进一…

jquery写组件滑动人机验证组件

jquery组件,虽然 jquery 语法古老,但是写好了用起来真的很爽啊,本文用滑动人机验证给大家做个详细教程(直接复制代码就可以用噢o(* ̄▽ ̄*)ブ) 第一步 先看下组件本身 component.js (function() {…
最新文章