网络学习(十) | 深入学习HTTPS与安全传输

文章目录

  • HTTPS与HTTP的关系
    • 基本概念
    • 主要区别
    • 关系
    • 发展趋势
  • HTTPS的加密原理与SSL/TLS协议
    • 加密原理
    • 加密机制
    • 总结
  • HTTPS的握手vs三次握手
    • 三次握手
    • HTTPS握手过程
    • 区别
    • 总结
  • 证书颁发机构(CA)与数字证书的验证
    • 证书颁发机构(CA)
    • CA的主要功能
    • 数字证书
    • 数字证书的验证过程
    • 举个例子

HTTPS与HTTP的关系

HTTP(HyperText Transfer Protocol,超文本传输协议)和HTTPS(HyperText Transfer Protocol Secure,安全超文本传输协议)是用于在计算机网络上进行通信的两种协议。它们之间的关系及区别主要体现在以下几个方面

基本概念

  1. HTTP:一种无状态的应用层协议,主要用于在Web浏览器和服务器之间传输超文本数据(如HTML文档)。HTTP是明文传输的,数据在传输过程中不进行加密。
  2. HTTPS:基于HTTP协议,通过SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议对数据进行加密传输,提供了数据完整性、数据保密性和身份认证等安全保障。

主要区别

  1. 安全性
  • HTTP:数据明文传输,容易被窃听和篡改。
  • HTTPS:数据经过加密传输,保护数据的机密性和完整性,防止窃听和篡改。
  1. 端口
  • HTTP:默认使用端口80。
  • HTTPS:默认使用端口443。
  1. 证书
  • HTTP:不需要证书。
  • HTTPS:需要由CA(Certificate Authority,证书颁发机构)签发的SSL/TLS证书,来验证服务器的身份。
  1. 性能
  • HTTP:由于不进行加密,传输速度相对较快。
  • HTTPS:加密和解密过程会消耗一定的资源,性能相比HTTP略低,但随着硬件和技术的发展,这种差异已经越来越小。

关系

  1. 协议层次
  • HTTPS可以看作是HTTP的一个扩展或者增强版本。它在HTTP的基础上加入了SSL/TLS层来保障安全性。
  1. 用途
  • 两者都用于Web数据传输,但HTTPS主要用于需要保护敏感信息的场景,如在线支付、个人信息提交等。
  1. 互操作性
  • 浏览器和服务器可以支持两种协议,但建议在涉及到安全敏感信息的场景下使用HTTPS,以保障数据安全。

发展趋势

随着互联网安全意识的提升,越来越多的网站开始强制使用HTTPS,以保护用户隐私和数据安全。浏览器也对未使用HTTPS的网站进行提示或警告,以引导用户注意网络安全。
总之,HTTPS是在HTTP基础上增强了安全特性,二者在数据传输上的基础功能相同,但HTTPS通过加密和身份认证机制提供了更高的安全保障。

HTTPS的加密原理与SSL/TLS协议

理解HTTPS的加密原理需要从几个关键技术和步骤入手,主要包括SSL/TLS协议的工作过程和相关的加密机制。

加密原理

HTTPS通过SSL/TLS协议对数据进行加密传输,确保数据的机密性、完整性和身份认证。其加密原理和过程大致可以分为以下几个步骤:

  1. 建立连接(握手过程)
  2. 客户端请求
    - 浏览器(客户端)发起一个HTTPS请求到服务器。
    - 客户端向服务器发送一个“ClientHello”消息,其中包含支持的SSL/TLS版本、加密算法、随机数等信息。
  3. 服务器响应
    - 服务器接收到“ClientHello”后,回复一个“ServerHello”消息,内容包括SSL/TLS版本、加密算法(从客户端支持的列表中选择)、服务器证书(包含公钥)等信息。
  4. 服务器证书验证
    - 客户端验证服务器证书的合法性,包括证书是否由受信任的CA签发、证书是否在有效期内等。如果验证失败,连接将被终止。
  5. 生成会话密钥
    - 客户端生成一个随机的“pre-master secret”(预主密钥),并使用服务器的公钥对其加密,然后发送给服务器。
    - 服务器使用自己的私钥解密获得“pre-master secret”。
    - 客户端和服务器使用“pre-master secret”及双方的随机数生成对称加密密钥(session key)。
  6. 握手完成
    - 双方使用生成的对称加密密钥加密后续的通信数据。
    - 客户端和服务器发送“Finished”消息,表明握手过程完成,接下来的通信都将使用对称密钥进行加密。
  7. 对称加密通信
  • 在握手完成后,客户端和服务器之间的通信使用对称加密算法(如AES、DES)进行加密和解密。对称加密相对非对称加密来说,速度更快,适合大量数据的加密传输。

加密机制

  1. 非对称加密
  • 用于握手阶段,用于安全地传输“pre-master secret”。
  • 公钥加密、私钥解密,通常使用RSA、ECDHE等算法。
  1. 对称加密
  • 用于握手后的数据传输阶段,用于加密和解密实际传输的数据。
  • 使用同一个密钥进行加密和解密,常用算法包括AES、DES等。
  1. 消息认证码(MAC)
  • 用于保证数据的完整性,防止数据在传输过程中被篡改。
  • 常用的MAC算法包括HMAC。
  1. 数字证书
  • 用于身份认证,确保客户端和服务器之间的通信是可信的。
  • 证书由受信任的CA机构签发,包含服务器的公钥及其身份信息。

总结

HTTPS的加密原理通过SSL/TLS协议实现,主要包括非对称加密用于安全地交换对称加密密钥,对称加密用于加密实际数据,消息认证码用于保证数据完整性,数字证书用于身份认证。通过这一系列的机制,HTTPS确保了客户端和服务器之间数据传输的安全性。

HTTPS的握手vs三次握手

HTTPS中的握手过程和网络中常讲的三次握手是两个不同的概念,尽管它们都是为了建立可靠的通信连接。

三次握手

三次握手是TCP(Transmission Control Protocol)建立连接的过程,用于确保客户端和服务器之间能够可靠地通信。以下是三次握手的详细步骤:

  1. 第一次握手(SYN)
  • 客户端向服务器发送一个SYN(synchronize)包,请求建立连接。
  • 该包包含一个初始序列号。
  1. 第二次握手(SYN-ACK)
  • 服务器收到SYN包后,向客户端发送一个SYN-ACK包,表示同意建立连接,并发送自己的初始序列号。
  1. 第三次握手(ACK)
  • 客户端收到SYN-ACK包后,向服务器发送一个ACK包,确认连接建立。
  • 连接建立后,客户端和服务器可以开始数据传输。

三次握手的主要目的是建立一个可靠的TCP连接,确保双方的接收和发送能力正常。

HTTPS握手过程

HTTPS握手过程是SSL/TLS协议的一部分,用于在客户端和服务器之间建立一个安全的通信通道。这个过程不仅仅是为了建立连接,还涉及加密算法协商、证书验证和密钥交换。主要步骤如下:

  1. 客户端请求
  • 客户端发送“ClientHello”消息,包含支持的SSL/TLS版本、加密算法、随机数等信息。
  1. 服务器响应
  • 服务器发送“ServerHello”消息,包含选择的SSL/TLS版本、加密算法、随机数,以及服务器证书。
  1. 证书验证
  • 客户端验证服务器证书的合法性。
  1. 密钥交换
  • 客户端生成“pre-master secret”,用服务器的公钥加密后发送给服务器。
  • 服务器使用私钥解密,得到“pre-master secret”。
  1. 会话密钥生成
  • 客户端和服务器根据“pre-master secret”和随机数生成对称密钥。
  1. 握手完成
  • 双方使用对称密钥加密后续通信的数据。

区别

  1. 目的不同
  • 三次握手:用于建立可靠的TCP连接。
  • HTTPS握手:用于建立安全的通信通道,并协商加密算法和密钥。
  1. 层次不同
  • 三次握手:发生在传输层(TCP)。
  • HTTPS握手:发生在应用层(HTTP)和传输层之间,通过SSL/TLS协议进行。
  1. 内容不同
  • 三次握手:主要是同步序列号和确认连接。
  • HTTPS握手:包括加密算法协商、证书验证、密钥交换等安全相关操作。

总结

尽管三次握手和HTTPS握手都涉及建立连接,但它们的目的、层次和内容完全不同。三次握手用于建立TCP连接,而HTTPS握手则用于建立安全的SSL/TLS连接。

证书颁发机构(CA)与数字证书的验证

证书颁发机构(CA)和数字证书是HTTPS和其他基于SSL/TLS的安全协议中的核心概念。它们的主要作用是通过身份验证和加密,确保网络通信的安全性和完整性。以下是对证书颁发机构和数字证书验证过程的详细解释。

证书颁发机构(CA)

**证书颁发机构(CA,Certificate Authority)**是一个受信任的第三方组织,负责签发和管理数字证书。数字证书用于验证通信方的身份,并包含公钥等信息。

CA的主要功能

  1. 签发证书
  • CA对申请者(如网站、组织)的身份进行验证,确保其真实性。
  • 验证通过后,CA将申请者的公钥和相关信息封装在一个数字证书中,并对其进行数字签名。
  1. 证书管理
  • 颁发、更新和撤销数字证书。
  • 维护证书吊销列表(CRL,Certificate Revocation List)或提供在线证书状态协议(OCSP,Online Certificate Status Protocol)服务,以供用户查询证书的有效性。
  1. 确保信任链
  • 根证书(Root Certificate)由顶级CA签发,根证书的公钥预置在操作系统和浏览器中。
  • 中级证书(Intermediate Certificate)由根CA或其他中级CA签发,形成信任链。

数字证书

数字证书是一种电子文档,用于证明持有者的身份,并包含以下信息:

  • 持有者的公钥
  • 持有者的身份信息(如域名)
  • 证书的有效期
  • 颁发该证书的CA信息
  • CA的数字签名

数字证书的验证过程

当客户端(如浏览器)与服务器(如网站)建立HTTPS连接时,会对服务器的数字证书进行验证,以确保通信的安全。以下是验证过程的主要步骤:

  1. 接收证书
  • 客户端从服务器接收数字证书。
  1. 验证证书链
  • 客户端检查证书的签发者(CA)是否可信,并通过证书链(从服务器证书到中级CA证书再到根CA证书)逐级验证。
  • 如果证书链中的任何一个证书无效,验证将失败。
  1. 验证签名
  • 客户端使用CA的公钥验证证书的数字签名,以确保证书未被篡改。
  • 这一步确保证书确实是由可信的CA签发的。
  1. 检查证书有效期
  • 客户端检查证书的有效期,确保当前日期在证书的有效期内。
  • 如果证书已过期,验证将失败。
  1. 检查证书吊销状态
  • 客户端查询CRL或使用OCSP,检查证书是否已被吊销。
  • 如果证书被吊销,验证将失败。
  1. 验证域名
  • 客户端检查证书中的域名信息,确保其与请求的服务器域名匹配。
  • 如果域名不匹配,验证将失败。

举个例子

假设用户访问https://www.example.com,浏览器将与服务器进行以下交互:

  1. 浏览器发送请求
  • 浏览器请求访问www.example.com
  1. 服务器发送证书
  • 服务器发送其数字证书给浏览器。
  1. 浏览器验证证书
  • 检查证书链,验证每个证书的签名。
  • 检查证书是否在有效期内。
  • 查询证书的吊销状态。
  • 确认证书中的域名与www.example.com匹配。
  1. 建立安全连接
  • 验证通过后,浏览器与服务器使用证书中的公钥进行密钥交换,生成对称密钥,用于后续的数据加密传输。

通过上述过程,CA和数字证书的验证确保了通信双方的身份真实性和数据传输的安全性。

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

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

相关文章

vue的axios配置超时时间;单个接口配置响应时间

vue项目中axios请求统一配置了超时时间,单独接口请求时重设超时时间 根据官网推荐:axios中文文档 1.配置的优先顺序 配置会以一个优先顺序进行合并。这个顺序是:在 lib/defaults.js 找到的库的默认值,然后是实例的 defaults 属性&…

【iOS】——GCD再学习

文章目录 一、GCD的定义二、GCD 任务和队列1.任务2.队列 三、GCD 的使用1.创建队列2.创建任务3.队列任务 组合方式并发队列 同步执行异步执行 并发队列同步执行 串行队列异步执行 串行队列同步执行 主队列在主线程中调用 同步执行 主队列在其它线程中调用 同步执行 主队…

四数相加Ⅱ-力扣

做这道题想到的解法是,由于该题只统计元组个数,而不需要位置,那我们首先用一个map来统计数组1和数组2两两元素之和出现的个数,然后去遍历数组3和数组4,在map中寻找 0 - c - d 这个键值是否存在(c和d为数组3…

uniApp 创建Android.keystore证书IOS的证书

Android 证书 1、安装JRE环境 可从Oracle官方下载jre安装包:https://www.oracle.com/technetwork/java/javase/downloads/index.html 打开命令行(cmd),输入以下命令: //切换工作目录到f:路径 D: //将jre命令添加到…

2024/5/22 Day36 greedy 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

2024/5/22 Day36 greedy 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果 1005.K次取反后最大化的数组和 题目链接 1005 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这…

Android制作.9图

需求背景:android 启动图变形 开发语言:uni-app,uni-app官网 俗语曰:授人以鱼不如授人以渔 原创地址:Android制作.9图 语雀 一.工具 使用android studio,因为android studio已经集成.9.png制作工具&a…

MYSQL设置字段默认值的函数

目录 前言IFNULLCOALESCE总结 前言 数据库中有些字段可能是null或统计字段也可能是NULL,这些前端拿到数据显示出来是空白,遇到这种情况,有必要将null的字段设置一个默认值。将NULL值的字段设置默认值的函数有IFNULL(expr1,expr2)和COALESCE(…

某勾求职网逆向分析

搜索目标: aHR0cHM6Ly93d3cubGFnb3UuY29tL3duL2pvYnM/cG49MSZweD1kZWZhdWx0JmZyb21TZWFyY2g9dHJ1ZSZrZD0lRTYlOTUlQjAlRTYlOEQlQUUlRTUlODglODYlRTYlOUUlOTA= 抓包分析 请求和返回都是加密的 请求头部也有未知参数 跟栈分析 请求和返回是一个AES加密,加密的KEY是session s…

鸿蒙OS开发:典型页面场景【一次开发,多端部署】(信息应用)案例

信息应用 简介 内容介绍 Mms应用是OpenHarmony中预置的系统应用,主要的功能包含信息查看、发送短信、接收短信、短信送达报告、删除短信等功能。 架构图 目录 /Mms/ ├── doc # 资料 ├── entry │ └── src │…

springboot3项目练习详细步骤(第四部分:文件上传、登录优化、多环境开发)

目录 本地文件上传 接口文档 业务实现 登录优化 SpringBoot集成redis 实现令牌主动失效机制 多环境开发 本地文件上传 接口文档 业务实现 创建FileUploadController类并编写请求方法 RestController public class FileUploadController {PostMapping("/upload&…

Flink 通过 paimon 关联维表,内存降为原来的1/4

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

力扣62 不同路径 Java版本

文章目录 题目描述代码 题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少…

C++笔试强训day35

目录 1.奇数位丢弃 2.求和 3.计算字符串的编辑距离 1.奇数位丢弃 链接https://www.nowcoder.com/practice/196141ecd6eb401da3111748d30e9141?tpId128&tqId33775&ru/exam/oj 数据量不大&#xff0c;可以直接进行模拟&#xff1a; #include <iostream> #incl…

06_知识点总结(JS高级)

一、进程与线程 1. 进程(process)&#xff1a;程序的一次执行, 它占有一片独有的内存空间 2. 线程(thread)&#xff1a; 是进程内的一个独立执行单元&#xff0c;CPU的基本调度单元, 是程序执行的一个完整流程 3. 进程与线程 * 应用程序必须运行在某个进程的某个线程上 * 一个…

曲线拟合工具软件(免费)

曲线拟合是数据处理中经常用到的数值方法,本质是使用某一个模型(方程或者方程组)将一系列离散的数据拟合成平滑的曲线或者曲面,数值求解出对应的函数参数,大家可以利用MATLAB的曲线拟合工具箱也可以使用第三方的拟合软件,今天我们介绍Welsim免费的曲线拟合软件 1、MATLA…

手撕C语言题典——返回倒数第 k 个节点(面试题)

前言 依旧力扣&#xff0c;这道题之前有做过类似的题&#xff0c;今天给一个新的思路去做&#xff0c;应对面试时候遇到的奇奇怪怪的问题 面试题 02.02. 返回倒数第 k 个节点 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/kth-node-from-end-of-list-…

动手学深度学习23 LeNet

动手学深度学习23 LeNet 1. LeNet2. 代码3. QA 1. LeNet 两层卷积两层池化两层全连接 卷积就是让每一层shape不断压缩变小【高宽减少】&#xff0c;通道数增多&#xff0c;把特征信息放到不同的通道里面。每一个通道认为是一个模式。然后再做全连接的输入。 2. 代码 impor…

css3 笔记02

目录 01 过渡 02 rotate旋转 03 translate函数 04 真正的3D 05 动画 06 阴影 07 自定义字体库 08 自定义动画库 01 过渡 过渡属性的使用: transition-property:要过渡的css属性名 多个属性用逗号隔开 过渡所有属性就写all transition-duration: 过渡的持续时间 s秒 …

vue实现加入购物车动效

实现 实现逻辑&#xff1a; 点击添加购物车按钮时&#xff0c;获取当前点击位置event的clientX 、clientY&#xff1b;动态创建移动的小球&#xff0c;动态计算小球需要移动到的位置&#xff08;通过ref 的getBoundingClientRect获取统计元素按钮位置&#xff09;&#xff1b…

985上交应届生转正12天,被某东辞退了!

&#x1f447;我的小册 45章教程:(小白零基础用Python量化股票分析小册) ,原价299&#xff0c;限时特价2杯咖啡&#xff0c;满100人涨10元。 01.事情起源 最近粉丝群都在转发一个截图&#xff0c;某应届毕业生在某东实习一年&#xff0c;才转正才12天&#xff0c;就因为自己调侃…