JAVAEE—HTTPS和ssl证书

news2024/12/25 9:10:19

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的哈希值也是加密传输的,他是服务器使用私钥加密我门的主机里面会存储这个证书机构的公钥然后我们用公钥解密就可以了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于浏览器360导航无法更改

当前环境场景: 浏览器:Microsoft Edge 版本 121.0.2277.106 (正式版本) (64 位) 系统:Windows 11 家庭中文版 23H2 问题描述 首先出现这种情况会让我们非常的气愤但是又束手无策,看到这个页面简直就恨的牙根痒痒,但是…

VMware配置centos虚拟机实现内网互通

VMware配置centos虚拟机实现内网互通 一、安装无桌面模式 环境说明: VMWare版本:VMware Workstation 17 Pro Centos版本:CentOS-7.9-x86_64-DVD-2009.iso 一键下载本文资源包 1. 安装虚拟机 下面是创建具体步骤,其中需要注意的是&#xff1…

OpenHarmony开源软件供应链安全风险

慕冬亮,华中科技大学网络空间安全学院副教授,武汉英才,华中科技大学OpenHarmony技术俱乐部、开放原子开源社团指导教师。研究方向为软件与系统安全,在国际安全会议上发表十余篇论文,并获得ACM CCS 2018杰出论文奖。创立…

JavaEE——Spring Boot + jwt

目录 什么是Spring Boot jwt? 如何实现Spring Boot jwt: 1. 添加依赖 2、创建JWT工具类 3. 定义认证逻辑 4. 添加过滤器 5、 http请求测试 什么是Spring Boot jwt? Spring Boot和JWT(JSON Web Token)是一对常…

装饰品模式介绍

装饰器模式是一种结构型设计模式,它允许用户在不改变现有对象的情况下向一个对象添加新的功能。在 Java 中,装饰器模式经常用来动态地给对象添加额外的行为,如日志记录、事务管理、安全检查等。 装饰器模式涉及四个主要角色:组件&…

【Ant-Desgin-React 步骤条】步骤条配合组件使用

步骤条配合组件使用 基础使用多分组进度 基础使用 /* eslint-disable no-unused-vars */ import React, { useState } from react import { Button, message, Steps, theme } from antd import After from ./components/after import Now from ./components/now const steps …

IOS恢复

1、实验目的 通过本实验可以掌握: copy方式恢复IOS的步骤。TFTPDNLD方式恢复IOS的步骤。Xmodem方式恢复IOS的步骤。 2、实验拓扑 路由器IOS恢复的实验拓扑如下图所示。 3、实验步骤 如果工作中不慎误删除路由器IOS,或者升级了错误版本的IOS&#xff…

Andorid复习

组件 TextView 阴影 android:shadowColor"color/red" 阴影颜色android:shadowRadius"3.0" 阴影模糊度(大小)android:shadowDx"10.0" 横向偏移android:shadowDy"10.0" 跑马灯 这里用自定义控件 public cla…

【线段树 区间位运算模板】3117划分数组得到最小的值之和

本文涉及知识点 线段树 区间位运算模板 LeetCode3117. 划分数组得到最小的值之和 给你两个数组 nums 和 andValues,长度分别为 n 和 m。 数组的 值 等于该数组的 最后一个 元素。 你需要将 nums 划分为 m 个 不相交的连续 子数组,对于第 ith 个子数组…

Spring Boost + Elasticsearch 实现检索查询

需求:对“昵称”进行“全文检索查询”,对“账号”进行“精确查询”。 认识 Elasticsearch 1. ES 的倒排索引 正向索引 对 id 进行检索速度很快。对其他字段即使加了索引,只能满足精确查询。模糊查询时,逐条数据扫描&#xff0c…

离散数学之一阶逻辑基本概念与等值演算思维导图+大纲笔记(期末复习,考研,学习笔记,知识点总结)

大纲笔记 基本概念 一阶逻辑命题符号化 个体词 个体常项 个体变项 个体域 个体总域 谓词 谓词常项 谓词变项 零元谓词 特性谓词 引入规则 量词 全称量词 存在量词 一阶逻辑1公式及解释 基本概念 原子公式 谓词公式 自由变元与约束变元 自由变元 换名规则 约束变元 带入规则 闭…

【Flink入门修炼】2-3 Flink Checkpoint 原理机制

如果让你来做一个有状态流式应用的故障恢复,你会如何来做呢? 单机和多机会遇到什么不同的问题? Flink Checkpoint 是做什么用的?原理是什么? 一、什么是 Checkpoint? Checkpoint 是对当前运行状态的完整记…

机器学习day3

一、距离度量 1.欧氏距离 2.曼哈顿距离 3.切比雪夫距离 4.闵可夫斯基距离 二、特征与处理 1.数据归一化 数据归一化是一种将数据按比例缩放,使之落入一个小的特定区间的过程。 代码实战 运行结果 2.数据标准化 数据标准化是将数据按照其均值和标准差进行缩放的过…

语义分割模型——浅谈U-net相关理论

目录 1 U-net简介 1.1 U-net是什么 1.2 U-net的创新点及优势 2 U-net改进思路 2.1 编码器优化 2.2 跳跃连接优化 2.3 解码器优化 2.4 其他优化方式 2.5 注意事项 1 U-net简介 1.1 U-net是什么 Ronneberger等人于2015年基于FCN(全卷积神经网络&#xff09…

【一般排查思路】针对银河麒麟高级服务器操作系统磁盘空间已满

1. 本身磁盘空间已满 有时候我们会看到服务器上有提示“设备上没有空间”,如图1。 图 1 如果是磁盘本身空间已满,我们可以借助du工具来排查,比如首先cd / 切换到根目录,然后 du -sh * | sort -rh | head -n 3查看空间占用最大的…

基于Springboot的在线动漫信息平台

基于SpringbootVue的在线动漫信息平台的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 热门动漫 文章专栏 会员分享 论坛信息 动漫资讯 后台登录 动漫分类管…

【Redis】Redis 非关系型数据库 安装、配置、使用(全集)

目录 Redis 第一章 1、什么是redis 2、安装redis 1-7 8 3、redis使用 第二章 1、redis的使用 1、使用方式 2、使用Java代码使用redis 3、优化连接redis 2、五种数据类型 常用命令 string hash list set zset 不同数据类型存、取、遍历的方法 3、redis在项目…

C++ | Leetcode C++题解之第49题字母异位词分组

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<string>> groupAnagrams(vector<string>& strs) {// 自定义对 array<int, 26> 类型的哈希函数auto arrayHash [fn hash<int>{}] (const array<int, 26>&…

d12(121-125)-勇敢开始Java,咖啡拯救人生

目录 JDK8前的Date SimpleDateFormat 解析字符串时间成为日期对象 秒杀 Calendar JDK8之后的时间 LocalDate LocalTime LocalDateTime LocalDate 获取日期对象中的信息 修改某信息 把某信息加/减多少 获取指定时间的LocalDime对象 判断两日期对象 是否相等 在前还是…

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

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