七、确保web安全的HTTPS

news2024/12/30 3:57:03

HTTPS

1、HTTP 的缺点

HTTP的主要缺点:

  • 通信使用明文(不加密),内容可能会被窃听

    HTTP 本身不具备加密的功能,因此无法做到对通信整体(使用 HTTP 协议通信的请求和响应的内容)进行加密。所以按TCP/IP 协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窃听。

  • 不验证通信方的身份,有可能遭遇伪装

    HTTP 协议中的请求和响应不会对通信方进行确认。也就是说任何人都可以发起请求。服务器只要接收到请求,不管对方是谁都会返回一个响应,所以就会出现“服务器是否就是发送请求中 URI 真正指定的主机,
    返回的响应是否真的返回到实际提出请求的客户端等等问题。

  • 无法证明报文的完整性,有可能已遭篡改

    HTTP 协议无法证明通信的报文完整性,在请求或响应送出之后直到对方接收之前的这段时间内,即使请求或响应的内容遭到篡改,也没有办法获悉。

2、HTTPS

为了统一解决上面的问题,需要在 HTTP 上再加入加密处理和认证等机制来确保安全。所以我们就把添加了加密及认证机制的 HTTP 称为 HTTPS。

HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。

2.1、SSL协议

SSL协议是在Internet基础上提供的一种保证私密性的安全协议。它能使客户端与服务器之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对客户端进行认证。

TSL是以 SSL为原型开发的协议,有时会统一称该协议为 SSL。

  • 连接的私密性

    SSL利用对称加密算法对传输数据进行加密,并利用密钥交换算法—RSA(Rivest Shamir and Adleman,非对称密钥算法的一种)加密传输对称密钥算法中使用的密钥。

  • 身份验证机制

    基于证书利用数字签名方法对服务器和客户端进行身份验证。SSL服务器和客户端通过公钥基础设施PKI(Public Key Infrastructure)提供的机制从CA获取证书。

  • 内容的可靠性

    消息传输过程中使用基于密钥的消息验证码MAC(Message Authentication Code)来检验消息的完整性。(MAC算法是将密钥和任意长度的数据转换为固定长度数据的一种算法。)

2.2、HTTPS 的安全通信机制

HTTPS 的通信步骤:
在这里插入图片描述

步骤 1: 客户端通过发送 Client Hello 报文开始 SSL通信。报文中包含客户端支持的 SSL的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度等)。

步骤 2: 服务器可进行 SSL通信时,会以 Server Hello 报文作为应答。和客户端一样,在报文中包含 SSL版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。

步骤 3: 之后服务器发送 Certificate 报文。报文中包含公开密钥证书。

步骤 4: 最后服务器发送 Server Hello Done 报文通知客户端,最初阶段的 SSL握手协商部分结束。

步骤 5: SSL第一次握手结束之后,客户端以 Client Key Exchange 报文作为回应。报文中包含通信加密中使用的一种被称为 Pre-mastersecret 的随机密码串。该报文已用步骤 3 中的公开密钥进行加密。

步骤 6: 接着客户端继续发送 Change Cipher Spec 报文。该报文会提示服务器,在此报文之后的通信会采用 Pre-master secret 密钥加密。

步骤 7: 客户端发送 Finished 报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。

步骤 8: 服务器同样发送 Change Cipher Spec 报文。

步骤 9: 服务器同样发送 Finished 报文。

步骤 10: 服务器和客户端的 Finished 报文交换完毕之后,SSL连接就算建立完成。当然,通信会受到 SSL的保护。从此处开始进行应用层协议的通信,即发送 HTTP 请求。

步骤 11: 应用层协议通信,即发送 HTTP 响应。

步骤 12: 最后由客户端断开连接。断开连接时,发送 close_notify 报文。上图做了一些省略,这步之后再发送 TCP FIN 报文来关闭与 TCP的通信。

下面是对整个流程的图解:
在这里插入图片描述
上图中说明了从仅使用服务器端的公开密钥证书(服务器证书)建立 HTTPS 通信的整个过程。

2.3 HTTPS缺点
  • 加密通信会会消耗更多的CPU 及内存资源。
  • 当使用 SSL时,它的处理速度会变慢。
  • 需要支出额外的证书成本。

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

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

相关文章

actipro-winforms-controls-23.1.0 Crack

actipro-winforms一组用于构建漂亮的 Windows 窗体桌面应用程序的 UI 控件,用于构建 IDE 的高级停靠窗口、MDI、属性网格、树控件和文件夹/文件浏览器,用于常见数据类型、自动完成、屏蔽编辑和代码编辑的强大编辑器,功能区、图表、微型图表、…

Centos7 安装 MySQL 8.0.31详细教程(亲测无障碍必成功)

操作之前,首先检查防火墙是否关闭(直接设置永久关闭) 查看防火墙状态:firewall-cmd --state 禁止firewall开机启动 永久生效:systemctl disable firewalld.service 重启电脑:reboot 1. 在FinallShell上传或…

Julia 教程

Julia 是一个开源的编程语言,采用 MIT 许可证,每个人都可以免费使用。 Julia 是一个面向科学计算的高性能动态高级程序设计语言。 Julia 最初是为了满足高性能数值分析和计算科学的需要而设计的,不需要解释器,速度快。 Julia 于…

筛选效率直接起飞,复杂场景秒变简单丨三叠云

表单 路径 表单设计 >> 高级筛选 功能简介 筛选条件优化升级,支持多种混合条件筛选。 功能描述: 本次更新支持2个层级的条件,系统处理数据时,将会先根据第二个层级的条件关系找出数据、继而再根据第一层级即分组之间的…

解决CondaUpgradeError网上的方法都不奏效(回退版本、upgrade/update都不行)的问题和CondaValueError

问题描述 Executing transaction: failed ERROR conda.core.link:_execute(502): An error occurred while installing package ‘conda-forge::certifi-2022.9.24-pyhd8ed1ab_0’. CondaUpgradeError: This environment has previously been operated on by a conda version…

Java 基础——File 类与 I/O 流

目录1.java.io.File 类的使用1.1.概述1.2.构造器1.3.常用方法1.3.1.获取文件和目录基本信息1.3.2.列出目录的下一级1.3.3.File类的重命名功能1.3.4.判断功能的方法1.3.5.创建、删除功能2.I/O 流原理及流的分类2.1.I/O 原理2.2.流的分类2.3.流的 API3.节点流之一:Fil…

项目经理PMO分别是什么?

1. PMO是什么?(1)定义PMO项目经理(Project Management Office Manager),也称为项目管理办公室经理、项目管理中心或者项目管理部。一般来说,PMO就是负责公司项目管理政策、标准的制定&#xff0…

C/C++每日一练(20230220)

目录 1. 利用字母组成图形 2. 子集 II 3. 路径总和 II 附录 深度优先搜索算法 广度优先搜索算法 1. 利用字母组成图形 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形&…

ROS2入门-话题-服务-接口

ROS2入门-话题-服务-接口 本文学习的是《动手学ROS2》 报错放在另一个文章中。 文章目录ROS2入门-话题-服务-接口Linux常用命令sudochomd 修改文件权限安装软件apt安装软件dpkg安装deb包打开终端VS code关机/重启静态链接库/动态链接库Cmake设置treeROS节点功能包创建功能包列…

数据分析,如何看待我国1400万人忍受极端通勤,单程通勤超60分钟!

女生极限通勤每天来回 6.5 小时,上海某位女士公司离家单程约100公里左右,单程通勤需要3小15分,来回通勤时间为6.5小时。如此长的通勤时间却不是个例,全国有超1400万人正在忍受单程超过60分钟的极端通勤,如何看待我国 1…

将默认安装的 WSL2 迁移至指定目录

将默认安装的 WSL2 迁移至指定目录WSL2 默认安装在 C 盘下,系统盘空间有限,推荐更改安装目录。 1. 默认安装的 WSL2 目录 C:\Users\cheng\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx 2. …

使用Swiper插件实现视频轮播,怎么实现切换自动播放视频?

一、需求分析 这两天讨论了一个项目需求,刚开始是希望:轮播图中嵌入视频,轮播到视频自动播放,播放完毕切换下一张轮播,手动切换时暂停播放视频。后面因为自动播放没有声音,便暂时放弃了这个想法&#xff0…

第2讲-数据库系统的结构抽象与演变(测试题总结)

一、测试题 DBS的三级模式:外模式(也叫用户模式或子模式),模式(也叫逻辑模式),内模式(也叫存储模式) 外模式/模式映像 实现了数据的逻辑独立性 模式/内模式映像 实现了…

李宏毅流模型

李宏毅流模型 常见的3中生成模型,Flow-base Model是第四种生成模型 2. normal distribution:正态分布 max object function:最大目标函数 dimention:维度 Inverse function:反函数 如果两个函数本身就互为反函数,那么这两个函数求解得到的两…

一、在没有Vuex如何解决组件间数据传递的问题

Vuex【state、mutations、actions、modules、getters】 一、在没有Vuex如何解决组件间数据传递的问题 举例:点击不同的选项卡来切换页面时 选项卡和页面属于不同的组件,他们都在同一个父组件之下。 选项卡和页面组件的数据都来源于父组件。在选项卡组…

Relational KD(CVPR 2019)原理与代码解析

paper:Relational Knowledge Distillationcode:https://github.com/megvii-research/mdistiller/blob/master/mdistiller/distillers/RKD.py背景本文从语言结构主义的角度来重新审视知识蒸馏,前者主要关注一个符号学系统中的结构关系。索续尔…

Linux系列 linux 常用命令(笔记)

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.linux 常用命令(目录文和件基本操作) 1.命令的分类…

一文读懂功率放大器(功率放大器的特性是什么意思)

功率放大器是一种电子放大器,旨在增加给定输入信号的功率幅度。功率放大器一般要求得到一定的不失真或者较小失真的输出功率,在大信号状态下进行工作,主要是输出较大功率。功率放大器的特性介绍:1、增益功率放大器的增益主要是指放…

postman利用newman生成测试报告

1.安装nodejs nodejs下载地址:https://nodejs.org/zh-cn/配置环境变量:在path环境变量中增加nodejs的安装路径 安装完成后,在控制台执行node -v检查是否安装成功2.安装newman 以管理员身份打开cmd控制台,执行如下命令安装newma…

测试团队都在用哪些不错的测试用例管理平台?盘点6大主流测试管理系统

测试团队使用的主流测试用例管理平台:1.PingCode ;2.TestRail;3.Testlink;4.ZephyrJira;5.TestCenter;6.飞蛾。目前市面上的测试用例管理工具有很多,但由于针对的项目、领域、目标用户&#xff…