【网络编程】HTTPS协议详解

news2024/11/24 4:40:07

引言

HTTPS是HTTP协议的安全版本,通过使用SSL(安全套接层)或TLS(传输层安全)协议加密通信,为数据传输提供了保密性、完整性和身份认证。与传统的HTTP相比,HTTPS能够防止敏感信息被窃取、篡改和劫持,为用户和网站提供了更安全可靠的通信方式。

常见的加密方式

对称加密:只有一个秘钥,加密和解密所用密匙是相同的。特点:算法公开,计算量小,加密速度快效率高
非对称加密:有两个秘钥(公钥和私钥),用公钥加密只有持有私钥的接受者才能解密,反之亦可。特点:算法复杂,加密速度慢,但是秘钥的分发的管理比较容易。

对称和非对称加密进行通信

在这里插入图片描述
如上图所示,看上去似乎没问题,但其实一开始服务端向客户端发送S(秘钥协商时)就已经被中间人劫持。如下图
在这里插入图片描述

非对称+对称+证书

证书

服务端在使用HTTPS前,需要向CA机构申领一份数字证书,数字证书⾥含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明服务端公钥的权威性。
该证书所包含的主要信息如下:

证书持有人信息:证书中包含了证书持有人的身份信息,如姓名、电子邮件地址、组织名称等。这些信息用于确保证书的有效性和唯一性。
证书持有人的公钥:证书中包含了证书持有人的公钥。公钥是加密通信中的重要组成部分,用于加密数据和验证签名。
证书颁发机构信息:证书中包含了颁发该证书的证书颁发机构的信息,如名称、网址等。这些信息用于验证证书颁发机构的可信度和信任链。
证书序列号:证书中包含了唯一的证书序列号,用于标识该证书的唯一性。
证书的有效期限:证书中包含了证书的有效期限,即该证书的使用期限。过期的证书将不再被信任和接受。
数字签名:证书中包含了由证书颁发机构使用其私钥对证书内容进行加密生成的数字签名。数字签名用于验证证书的完整性和真实性。

通信过程

1.客户端请求:客户端发起HTTPS请求,连接到服务器。
2.证书解析:服务器响应并发送其数字证书给客户端。
3.CA证书验证:客户端使用内置的根证书或中间证书对服务器的证书进行验证。
4.验证签名:客户端使用CA的公钥解密服务器证书中的数字签名,得到数据摘要,并与服务器公钥加密的数据摘要进行对比,以验证证书的真实性。
5.证书链验证:如果证书是由中间CA颁发,客户端还需验证中间CA的合法性。
6.证书有效期验证:客户端检查证书是否在有效期内。
7.身份和安全性确认:一旦证书验证成功,客户端确认服务器的身份,使用证书中的公钥加密一个随机生成的对称密钥,并将其发送给服务器。
8.服务器解密对称密钥:服务器使用自己的私钥解密得到对称密钥。
9. 后续通信使用对称加密:客户端和服务器使用该对称密钥加密后续的所有通信数据

数字签名

数字签名是一种用于验证电子文档或数据完整性和真实性的技术手段。它类似于传统纸质文件的签名,在数字领域提供了身份认证、数据完整性保护和防止抵赖等功能。

数字签名的基本原理如下:

私钥和公钥:数字签名使用非对称加密算法。签名者拥有一对密钥,其中一个是私钥,用于生成数字签名;另一个是公钥,用于验证签名。

数据摘要:签名者首先对原始数据(例如文件或信息)进行哈希计算,生成唯一的数据摘要(也称为消息摘要或哈希值)。数据摘要的作用是将数据压缩成固定长度的字符串,具备唯一性和不可逆性。

数字签名生成:签名者使用私钥对数据摘要进行加密操作,生成数字签名。只有使用相应公钥可以验证数字签名的合法性。

数字签名验证:接收者获取到原始数据、数字签名和签名者的公钥。接收者使用签名者的公钥(CA公钥是公开的)对数字签名进行解密操作,得到解密后的数据摘要。然后,接收者对原始数据进行同样的哈希计算,生成新的数据摘要。最后将两个数据摘要进行比较,如果相同,则说明数据完整且未被篡改,数字签名有效。

中间人能篡改证书吗?

中间人理论上不能篡改证书,因为他们没有CA的私钥来重新生成匹配的数字签名。即使篡改了证书的明文,客户端在验证签名时会发现不一致,从而拒绝该证书。

总结

HTTPS工作过程中涉及到的秘钥有三组:
1.非对称加密(CA):用于检验证书是否被篡改,服务器持有(证书的)私钥(在形成CSR文件申请证书时获得),客户端持有公钥(操作系统包含了可信任的CA机构有哪些,同时持有对应的公钥)。服务器在客户端请求时返回携带签名的证书,客户端通过这个公钥进行证书验证,保证证书的合法性。
2.非对称加密(协商生成对称秘钥):客户端用收到的CA证书中的公钥(是被信任的)给随机生成的对称秘钥加密,传输给服务器,服务器通过私钥解密获取到对称加密秘钥。
3.对称加密(数据传输)

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

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

相关文章

微信公众号有哪些类型,微信服务号和订阅号有哪些区别

什么是微信公众号? 微信公众号是国内社交媒体平台微信上的公众账号。它们是允许公司发布内容,收集追随者并推广其产品或服务的商业帐户。微信公众号主要有两种类型:订阅账号和服务账号。 微信月活跃用户突破12亿 微信最近达到了平台上的月活…

嵌入式的发展怎么样?

据统计,目前嵌入式人才处于供不应求的状态,对嵌入式工程师的需求达到了全部需求量的 60%至 80%,而且每年还以 20%的速率在增长。因此,学习嵌入式对于大多数人来说,是比较容易找到工作的。 让我再为大家举个例子。近年来…

Pandas进阶

文章目录 第1关:Pandas 分组聚合第2关:Pandas 创建透视表和交叉表 第1关:Pandas 分组聚合 编程要求 使用 Pandas 中的 read_csv() 函数读取 step1/drinks.csv 中的数据,数据的列名如下表所示,请根据 continent 分组并…

ai智能答题助手,这四款软件让知识触手可及!

在数字化时代,知识的获取变得前所未有的便捷。随着人工智能技术的不断发展,AI智能答题助手应运而生,成为了人们学习、工作和生活中的得力助手。今天,就为大家介绍四款备受欢迎的AI智能答题助手软件,让你感受知识的魅力…

Python 进阶(十九):解析命令行参数(argparse 模块)

大家好,我是水滴~~ 当处理命令行参数时,Python 的 argparse 模块是一个强大而灵活的工具。它提供了一个简单且一致的方式来定义命令行参数、选项和子命令,并帮助你解析和验证用户提供的输入。本教程将详细介绍 argparse 模块的使用方法和常见…

5.1 Java全栈开发前端+后端(全栈工程师进阶之路)-服务端框架-MyBatis框架-相信我看这一篇足够

0.软件框架技术简介 软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也 指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。 框架的功能类似于基础设…

环形链表问题详解

引言 环形链表的题大家都应该做过,如果没有做过可以去某扣上做一下 ,下面有传送门 141. 环形链表 - 力扣(LeetCode)https://leetcode.cn/problems/linked-list-cycle/submissions/530160081/ 正文 如果在面试的情况下出现了环形链表的题大…

阿里云VOD视频点播流程(1)

一、开通阿里云VOD 视频点播(ApsaraVideo VoD,简称VOD)是集视频采集、编辑、上传、媒体资源管理、自动化转码处理、视频审核分析、分发加速于一体的一站式音视频点播解决方案。登录阿里云,在产品找到视频点播VOD ,点击…

QT4-升级到QT5(1)

1.C报错汇总_nafxcwd.lib error lnk2001-CSDN博客1 1.QT3Support QWidget::setShown 改为QWidget::setVisible 2.头文件 #include<QWidget> 3.部分函数替换

Neo4j+LLM+RAG 环境配置报错处理

开发KGLLMRAG程序时遇到以下报错&#xff0c;记录下处理方案&#xff1a; ValueError: Could not use APOC procedures. Please ensure the APOC plugin is installed in Neo4j and that ‘apoc.meta.data()’ is allowed in Neo4j configuration 这个参考文章&#xff1a;link…

74从零开始学Java之排序算法中的冒泡和选择排序

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们要想成为一个优秀的程序员,其实非常关键的一点就是要锻炼培养自己的编程思维,就好比一个狙击手,要通过大量的射击训练要用大量的子弹喂出来。同样的…

【解决Android Studio】cmake报错找不到vulkan包

1 报错信息 CMake Error at D:/Android/project/cmake/3.10.2.4988404/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could NOT find Vulkan (missing: Vulkan_LIBRARY) Call Stack (most recent call first): 2. 错误原因 minSdk版本不对&am…

为什么创业青年,集体选择抖音小店?是藏在抖音里的财富密码!

哈喽~我是电商月月 为什么创业青年&#xff0c;集体选择抖音小店&#xff1f;因为在这开店不需要自己直播卖货做引流&#xff0c;也不需要自己手里有商品呀 是不是很匪夷所思&#xff0c;别怀疑&#xff0c;给我俩分钟你们绝对不后悔自己的停留&#xff01; 首先就是社会的现…

栈PART 1

目录 1. 栈 1.1 栈的概念和结构 1.2 栈的实现 1.2.1 栈的顺序储存结构 1.2.2 栈的基本操作 1.3 有效的括号 1. 栈 1.1 栈的概念和结构 堆栈又名栈&#xff08;stack&#xff09;&#xff0c;它是一种运算受限的线性表。 限定仅在表尾进行插入和删除操作的线性表。这一端…

3d中如何对模型粉碎处理?---模大狮模型网

在3D建模和动画设计中&#xff0c;模型粉碎处理是一种引人注目的效果&#xff0c;可以为场景增添动态和震撼的视觉效果。无论是用于电影特效、游戏设计还是虚拟现实项目&#xff0c;都可以通过模型粉碎处理来创造出引人入胜的场景。本文将介绍如何在3D中轻松实现模型粉碎处理&a…

FastText 算法原理及使用方法

文章目录 1. 前言2. 模型架构2.1 Hierarchical Softmax2.2 n-gram 特征 3. 训练及评估4. 使用5. 参考 1. 前言 FastText 是一个由 Facebook AI Research 在2016年开源的文本分类器&#xff0c;它的设计旨在保持高分类准确度的同时&#xff0c;显著提升训练和预测的速度。 论文…

Day_3

1. HttpClient HttpClient是Apache的一个子项目&#xff0c;是高效的、功能丰富的支持HTTP协议的客户端编程工具包 作用&#xff1a;发送HTTP请求&#xff0c; 接受相应数据 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>…

森林消防—高扬程水泵:守护绿色屏障的专业利器/恒峰智慧科技

在广袤的森林中&#xff0c;火灾无疑是最具破坏性的灾难之一。为了及时应对森林火灾&#xff0c;保护珍贵的自然资源和生态平衡&#xff0c;高效的消防设备显得尤为重要。森林消防高扬程水泵便是其中一款专业设备&#xff0c;以其高效输送水源的能力&#xff0c;成为守护森林绿…

【服务治理中间件】consul介绍和基本原理

目录 一、CAP定理 二、服务注册中心产品比较 三、Consul概述 3.1 什么是Consul 3.2 Consul架构 3.3 Consul的使用场景 3.4 Consul健康检查 四、部署consul集群 4.1 服务器部署规划 4.2 下载解压 4.3 启动consul 五、服务注册到consul 一、CAP定理 CAP定理&#xff…

hexo 博客插入本地图片时遇到的坑

哈喽大家好&#xff0c;我是咸鱼。 最近一直在折腾博客的事&#xff0c;说是 hexo 极易上手&#xff0c;我觉得只仅限于在安装部署的时候&#xff0c;随着对 hexo 的深入使用&#xff0c;发现遇到的问题还是挺多的。 那今天来讲一下我在把本地图片插入到 hexo 博客文章中遇到…