JAVAEE—HTTPS和ssl证书

0@[toc]

什么是HTTPS

HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层.
HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况而HTTPS则是新采用加密的方式进行传输

为什么需要HTTPS

为什么要使用HTTPS呢?这其实当然是因为我们在实际生活中由于我们的HTTP用的是明文传输这就导致我们自己的数据很容易泄露这就导致这些数据会被别有用心之人拿到做坏事比如说,移动,联通,电信这三大运营商。

在使用HTTPS之前有哪些不好的现象

在没有使用HTTPS之前,那时候运营商劫持事件非常的猖獗,比如说我们要下载一个软件,下载之后发现这并不是我们要下载的那一款软件,这就非常恶心了,因此为了防止这种现象发生,各大公司就开始自发的使用HTTPS进行传输数据了。

HTTPS安全性是如何做到的

他是使用加密的手段进行的,那么如何进行加密的呢这里就涉及到到了密钥的这个概念。那么什么是密钥呢?我们看看下图
在这里插入图片描述
在这里插入图片描述
下图中慈溪太后拿到了一封信,这封信上的内容大部分都是无关紧要的,只有另一张纸上的洞进行对比才能得到真正的内容,而这张破洞的纸其实就是密钥,而密钥又分为对称密钥和非对称密钥

什么是对称密钥

首先什么是对称密钥呢?我们还是以上面为列,慈溪太后在拿到这张内容的时候要用破洞的纸对信的内容做解密,那么传给他这封信的那个人,在写下这个内容的时候是不是也需要用这张破洞的纸把自己想要写的内容写在这个洞对应的位置下啊?那么是不是说这张纸即做了加密的工作也做了解密的工作,那么这张纸就是一个对称密钥,也就是说对于密钥来说,一个密钥同时做加密和解密那么这个密钥就是对称密钥。

什么是非对称密钥

那么什么是非对称密钥呢?非对称密钥以上面为列,也就是慈溪手上有两张纸一张纸用来加密一张纸用来解密,这里我们要注意,其实在现实生活中我们认为的钥匙和锁就是锁用来加密钥匙用来解密,但是在计算机中,这个密钥是既能用来加密也能用来解密。而非对称密钥则以加密和解密分为了公钥和私钥

公钥和私钥

什么是公钥呢?公钥就是用来让别人将自己的密文进行加密,加密之后发送而来然后自己解密用的密钥叫做私钥其实这里的公钥私钥的区别就是公钥加密私钥解密。

HTTPS如何保证的安全性

HTTPS中可能存在的危险情况

首先我们要先知道对称密钥加密和非对称密钥,以及对称非对称共同使用这几种状况中可能出现的漏洞。我们来逐一分析

对称密钥加密

在这里插入图片描述
此时我们如果直接使用对称进行加密的话那么我们的对称密钥也会被黑客接收到,这就 导致我们的消息在黑客眼里也是没有任何隐私可言的。

非对称加密

在这里插入图片描述
那么此时我们如果全部使用非对称加密是否可以呢?非对称加密他的效率是非常的低效的,而且不仅效率低,安全性其实也并不是很高。不信?我们来看看吧
在这里插入图片描述
因此这种方法不仅效率低下而且还不安全我们在实际开发中使用的是哪种方式呢?

非对称密钥与对称密钥互相配合的加密通信方式

在这里插入图片描述
此时用这种方式我们发现虽然我们的效率得到了一定的提升可是这也迎来了一种问题那就是如果黑客还是采取上面的那种方法的话我们的安全性问题还是没有得到保证啊那该怎么办呢?我们来看看最终 的解决办法

最终的解决办法

首先我们要知道为什么上面的方法不行?很明显是因为我门没有能力去分辨路由器给我们的公钥究竟是目标服务器发来的还是我们黑客发来的,那么这时候假如说能找到一个公证人就可以解决了,这时候也就引入了安全证书。

什么是安全证书

什么是安全证书呢?安全证书其实就是我们发送自己的公钥的时候这里面会有一个字段保留了一个字符串这个字符串表明自己是安全的,这个证书我们称之为ssl证书SSL证书是一种数字证书,由权威的证书颁发机构颁发。它包含了一个公钥和有关证书所有者的一些信息,如名称、组织、邮箱等。SSL证书的主要作用是实现数据加密和身份验证,确保数据在传输过程中的安全性和完整性。数据加密:SSL证书通过使用加密算法对数据进行加密,确保数据在传输过程中的安全性和完整性。即使数据在传输过程中被截获,攻击者也无法轻易地解密和篡改数据。
身份验证:SSL证书还包含了对网站所有者的身份验证。当用户访问一个使用SSL证书的网站时,浏览器会验证该证书是否由权威的证书颁发机构颁发,并验证网站所有者的身份信息。这可以防止中间人攻击和钓鱼网站等安全威胁。
防止数据篡改:通过使用SSL证书,HTTPS协议能够检测数据在传输过程中是否被篡改。如果数据被篡改,SSL证书将无法验证通过,从而保证了数据的完整性和可信度。
因此当一个正规的网站服务器给我们发送他的公钥的时候我们是可以通过检验对方的安全证书判断其是否安全。
但是这时候我们可能会有一个想法那就是,假如说黑客能够申请到安全证书并且将密钥上携带的安全证书更改为自己机构的安全证书呢?这里就涉及到了安全证书的检验

安全证书的检验

当我们收到了安全证书之后我们是要判断这个安全证书是否被修改的,那么如何判断呢?验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥, 对签名解密, 得到一个 hash 值(称为数据摘要), 设为 hash1. 然后计算整个证书的 hash 值, 设为hash2. 对比 hash1 和 hash2 是否相等. 如果相等, 则说明证书是没有被篡改过的。.

检验细节

这里我们上面说的可能会感觉有些抽象,假设我们的证书只是一个简单的字符串 zyfcl, 对这个字符串计算hash值(比如md5), 结果为BC4B2A76B9719D91
如果 hello 中有任意的字符被篡改了, 比如变成了 zyfcll, 那么计算的 md5 值就会变化很大. BDBD6F9CF51F2FD8
然后我们可以把这个字符串 hello 和 哈希值 BC4B2A76B9719D91 从服务器返回给客户端, 此时客户端如何验证 hello 是否是被篡改过? 那么就只要计算 hello 的哈希值, 看看是不是 BC4B2A76B9719D91 即可.并且这里面这个hello的哈希值也是加密传输的,他是服务器使用私钥加密我门的主机里面会存储这个证书机构的公钥然后我们用公钥解密就可以了。

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

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

相关文章

【SpringCloud】LoadBalance负载均衡服务调用快速入门

【SpringCloud】LoadBalance负载均衡服务调用快速入门 文章目录 【SpringCloud】LoadBalance负载均衡服务调用快速入门1. 概述2. 引入依赖3. 配置、验证3.1 配置3.2 验证 1. 概述 官网地址:点击跳转 Spring Cloud LoadBalancer 是由 SpringCloud 官方提供的一个开…

2024高级卫生职称考试报名时间汇总

20地报名时间汇总,其他时间安排见图 上海:4.23-5.24 黑龙江:4.23-5.24 陕西:4.23-5.24 重庆:4.23-5.24 浙江:4.23-5.24 20地报名时间汇总 甘肃:4.23-5.24 江西:4.28-5.10 河北&#…

五一劳动节活动策划案怎么写?

分享一个五一劳动节活动策划万能模板,直接照着写就好。 一、活动主题: 五一户外露营Party 二、活动时间: 五一节当天,上午点至下午点 三、活动地点: 城市郊外的公园或大型绿地 四、参与人员: 公司员…

ChatGPT付费创作系统V2.8.4独立版 WEB+H5+小程序端 (新增Pika视频+短信宝+DALL-E-3+Midjourney接口)

小狐狸GPT付费体验系统最新版系统是一款基于ThinkPHP框架开发的AI问答小程序,是基于国外很火的ChatGPT进行开发的Ai智能问答小程序。当前全民热议ChatGPT,流量超级大,引流不要太简单!一键下单即可拥有自己的GPT!无限多…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别 一、简单介绍 二、简单进行人脸训练与识别 1、LBPH…

政安晨:【Keras机器学习示例演绎】(十六)—— 用于图像分类的混合增强

目录 简介 设置 准备数据集 定义超参数 将数据转换为 TensorFlow 数据集对象 定义混合技术函数 可视化新的增强数据集 模型制作 1.使用混合数据集训练模型 2.在没有混合数据集的情况下训练模型 说明 政安晨的个人主页:政安晨 欢迎 👍点赞✍评…

BGP的基本配置

l 按照以下步骤配置BGP协议: 第1步:设备基本参数配置,AS内配置IGP确保内部网络连通性; l 配置IGP(OSPF协议等)路由解决peer对等体的源和目标IP之间连通性,确保peer之间TCP(179&a…

SpringBoot学习之Redis下载安装启动【Mac版本】(三十七)

一、下载Redis 1、下载地址:Downloads - Redis 往下滑,找到Downloads区域,这里有若干版本,这里我们选择了7.0的稳定版本 2、我们下载的是redis-7.0.15.tar.gz,这是一个压缩包,我们双击解压这个压缩包,可以得到如下文件 二、安装Redis 1、我们进入redis根目录安装mak…

IDEA使用技巧(常用设置、快捷键等)

IDEA使用技巧 一、IDEA常用基本设置设置代码背景颜色/主题/字体Ctrl鼠标滚轮缩放字体大小设置字符编码左右两侧的Project,Structure,Maven等按钮消失新增类似sout,psvm的模版切换某个模块编译的JDK版本 二、常用快捷键CtrlAltT包裹代码Alt回车联想补全Ct…

Qt : 禁用控件默认的鼠标滚轮事件

最近在写一个模拟器,在item中添加了很多的控件,这些控件默认是支持鼠标滚动事件的。在数据量特别大的时候,及容易不小心就把数据给修改了而不自知。所有,我们这里需要禁用掉这些控件的鼠标滚轮事件。 实现的思想很简单&#xff0c…

数据结构篇其二---单链表(C语言+超万字解析)

目录 前言: 一、顺序表的缺点和链表的引入。 二、链表概述 实现一个简单的链表 空链表的概念 三、链表的功能实现 链表的打印 链表节点的创建 链表的头插(自上而下看完分析,相信你会有所收获) 头插的前置分析 传值调用和…

一、路由基础

1.路由协议的优先级 路由器分别定义了外部优先级和内部优先级(越小越优) 路由选择顺序:外部优先级>>内部优先级(相同时) ①外部优先级:用户可以手工为各路由协议配置的优先级 ②内部优先级&#xf…

汽车信息安全--如何理解TrustZone(2)

目录 1.概述 2 如何切换安全状态 3 TrustZone里实现了什么功能? 4. 与HSM的比较 1.概述 汽车信息安全--如何理解TrustZone(1)-CSDN博客讲解了什么是Trustzone,下面我们继续讲解与HSM的区别。 2 如何切换安全状态 在引入安全扩展后,Arm…

太速科技-多路PCIe的阵列计算全国产化服务器

多路PCIe的阵列计算全国产化服务器 多路PCIe的阵列计算全国产化服务器以国产化处理器(海光、飞腾ARM、算能RSIC V)为主板,扩展6-8路PCIe3.0X4计算卡; 计算卡为全国产化的AI处理卡(瑞星微ARM,算能AI&#x…

MMSeg搭建模型的坑

Input type(torch.suda.FloatTensor) and weight type (torch.FloatTensor) should be same 自己搭建模型的时候,经常会遇到二者不匹配,以这种情况为例,是因为部分模型没有加载到CUDA上面造成的。 注意搭建模型的时候,所有层都应…

Oracle之RMAN联机和脱机备份(二)

rman脱机备份,首先使用rman登入数据库服务器,然后关闭数据库后,启动数据库到mount状态,在执行backup database指定备份整个数据库。 1、启动mount归档模式 sys@ORCL>archive log list; Database log mode Archive Mode Automatic archival Enabl…

STM32H750外设ADC之开始和结束数据转换功能

目录 概述 1 开始转换 1.1 使能ADSTART 1.2 使能JADSTART 1.3 ADSTART 通过硬件清零 2 转换时序 3 停止正在进行的转换( ADSTP、 JADSTP) 3.1 停止转换功能实现 3.2 停止转换流程图 概述 本文主要讲述了STM32H750外设ADC之开始和结束数据转换…

SPRD Android 14 通过属性控制系统设置显示双栏或者单栏

SPRD Android 14 通过属性控制系统设置显示双栏或者单栏 第一步 确认有添加静态库第二步 验证第三步 修改源码在合适的地方配置 ro.product.is_support_SettingsSplitEnabled 即可。第一步 确认有添加静态库 --- a/packages/apps/Settings/Android.bp +++ b/packages/apps/Set…

[集群聊天项目] muduo网络库

目录 网络服务器编程常用模型什么是muduo网络库什么是epoll muduo网络库服务器编程 网络服务器编程常用模型 【方案1】 : accept read/write 不是并发服务器 【方案2】 : accept fork - process-pre-connection 适合并发连接数不大,计算任…

Centos的一些基础命令

CentOS是一个基于开源代码构建的免费Linux发行版,它由Red Hat Enterprise Linux (RHEL) 的源代码重新编译而成。由于 CentOS是基于RHEL构建的,因此它与RHEL具有非常类似的特性和功能,包括稳定性、安全性和可靠性。并且大部分的 Linux 命令在C…