JAVAEE—HTTPS和ssl证书

devtools/2024/9/24 21:25:01/

0@[toc]

什么是HTTPS

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

为什么需要HTTPS

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

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

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

HTTPS安全性是如何做到的

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

什么是对称密钥

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

什么是非对称密钥

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

公钥和私钥

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

HTTPS如何保证的安全性

HTTPS中可能存在的危险情况

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

对称密钥加密

https://img-blog.csdnimg.cn/direct/85c93483f2034cb5a8c506899951a19e.png" alt="在这里插入图片描述" />
此时我们如果直接使用对称进行加密的话那么我们的对称密钥也会被黑客接收到,这就 导致我们的消息在黑客眼里也是没有任何隐私可言的。

非对称加密

https://img-blog.csdnimg.cn/direct/3e325039bd5e4d4c9e7c323971352617.png" alt="在这里插入图片描述" />
那么此时我们如果全部使用非对称加密是否可以呢?非对称加密他的效率是非常的低效的,而且不仅效率低,安全性其实也并不是很高。不信?我们来看看吧
https://img-blog.csdnimg.cn/direct/74e566ec8e384f0ca1c06a97376daa74.png" alt="在这里插入图片描述" />
因此这种方法不仅效率低下而且还不安全我们在实际开发中使用的是哪种方式呢?

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

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

最终的解决办法

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

什么是安全证书

什么是安全证书呢?安全证书其实就是我们发送自己的公钥的时候这里面会有一个字段保留了一个字符串这个字符串表明自己是安全的,这个证书我们称之为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的哈希值也是加密传输的,他是服务器使用私钥加密我门的主机里面会存储这个证书机构的公钥然后我们用公钥解密就可以了。


http://www.ppmy.cn/devtools/21616.html

相关文章

Android Studio开发工具学习之Git远程仓库拉取与推送

Git远程仓库操作 1.1 推送项目到远端服务器1.1.1 进入Gitee或Github、创建一个新的仓库1.1.2 将Android Studio中项目推送至Gitee 1.2 从远端服务器拉取项目1.2.1 AS工程页拉取新项目1.2.2 AS启动页拉取项目 1.1 推送项目到远端服务器 1.1.1 进入Gitee或Github、创建一个新的仓…

【UE C++】设置游戏模式

问题 我们都知道如何使用蓝图创建一个游戏模式并且在这个游戏模式蓝图中去设置“默认pawn类”、“HUD类”、“玩家控制器类”、“游戏状态类”、“玩家状态类”、“旁观者类”。那么如何使用C完成该操作呢? 步骤 1. 首先创建“GameMode”、“GameState”、“HUD”…

商汤研究院招大模型实习生

商汤研究院招大模型实习生,base上海、北京,400/day。福利:每天50租房补贴,20的餐补。晚上8点之后回去有额外的25元晚餐餐补,10点之后回去可以免费用滴滴。 组内的大模型工作大概分两个方向: 1.3B、3B等小…

【Jenkins】持续集成与交付 (五):Jenkins用户权限管理

【Jenkins】持续集成与交付 (五):Jenkins用户权限管理 1、安装插件(Role-based Authorization Strategy)2、开启权限全局安全配置3、创建角色4、创建用户5、给用户分配角色6、测试权限💖The Begin💖点点关注,收藏不迷路💖 1、安装插件(Role-based Authorization Stra…

Promise面试题

promise与 fetch、async/await_fetch async 获取结束标志-CSDN博客 手写promise A、catch、finally、all、allsettled、any、race-CSDN博客 【建议星星】要就来45道Promise面试题一次爽到底(1.1w字用心整理) - 掘金 目录 每隔1秒输出1,2,3 红黄绿灯交替亮 按序执行数组 …

纯血鸿蒙APP实战开发——预渲染实现Web页面瞬开效果

介绍 为了便于大家在使用本案例集时能够更详细的了解各个案例,本案例基于Web预渲染实现了案例介绍功能,即应用右下角的问号icon。 效果图预览 使用说明 因为直接加载的线上README,因此本功能需联网使用点击icon,即会弹出对应案…

ffmpeg的安装以及使用

1.FFmpeg 的主要功能和特性: 格式转换:FFmpeg 可以将一个媒体文件从一种格式转换为另一种格式,支持几乎所有常见的音频和视频格式,包括 MP4、AVI、MKV、MOV、FLV、MP3、AAC 等。视频处理:FFmpeg 可以进行视频编码、解…

设计模式(五):建造者模式

设计模式(五):建造者模式 1. 建造者模式的介绍2. 建造者模式的类图3. 建造者模式的实现3.1 创建食物接口3.2 创建包装接口3.3 创建具体包装3.4 创建具体食物3.5 创建Meal类3.6 创建MealBuilder类3.7 演示建造者模式 1. 建造者模式的介绍 建造…