应用层协议:HTTPS
目录
HTTPS:超文本传输安全协议
1、概念
2、通信过程及关键技术
2.1 通信过程
1> TLS握手协商(建立安全通道)
2> 加密数据传输
2.2 关键技术
1> 对称加密算法
2> 非对称加密
3> 对称加密和非对称加密组合
4> 数字证书
5> 数字签名
3、作用
HTTPS:超文本传输安全协议
1、概念
概念:HTTPS(Hypertext Transfer Protocol Secure)是 HTTP 的安全版本,是身披SSL/TLS外壳的HTTP。其核心目标是在客户端(如浏览器)和服务器之间建立一个加密的通信通道,确保传输数据的机密性、完整性和身份真实性,防止数据在传输过程中被窃听、篡改或冒充。默认端口是443。
核心目标:
-
保密性/加密: 数据在传输过程中是加密的,即使被截获,攻击者也无法轻易读懂内容。
-
数据完整性: 确保数据在传输过程中没有被第三方篡改或破坏。
-
身份认证: 用户访问的网站服务器确实是它声称的那个服务器,而不是一个冒名顶替的钓鱼网站。
解决方案:
- 所有的信息都是加密传输的,第三方无法窃听
- 具有校验机制,一旦被篡改,通信双方会立刻发现
- 配备身份验证(服务端程序),防止身份被冒用
SSL/TLS是一种加密通道的规范,TLS(Transport Layer Security,传输层安全协议),其前身是 SSL(Secure Sockets Layer)。现在通常统称为 TLS/SSL 或直接说 TLS。
TLS协议构成:
- 握手协议(TLS handshake Protocol):由TLS Change Ciper Spec Protocol(密码规格变更协议)和TLS Alert Protocol(警告协议)组成,负责在客户端和服务器之间协商决定密码算法和共享密钥。实现身份认证。
- 密码规格变更协议:负责向通信对象传达变更密码方式的信号,当协议中途发生错误时,就会通过警告协议传达给对方。
- 警告协议:是TLS握手协议负责在发送错误时将错误传达给对方。
- 记录协议(TLS Record protocol):位于TLS握手协议的下层,是负责使用对称密码对消息进行加密通信的部分,保证数据完整性和隐私性。
- 加密使用的密钥是通过握手协议在服务器和客户端之间协商决定的
2、通信过程及关键技术
2.1 通信过程
HTTPS通信过程大致可以分为两个主要阶段:
1> TLS握手协商(建立安全通道)
-
客户端问候: 你的浏览器(客户端)连接到服务器的 443 端口(HTTPS 默认端口),发送支持的 TLS 版本、支持的加密算法套件列表、一个随机数(Client Random)等信息。
-
服务器问候: 服务器选择双方都支持的最强的 TLS 版本和加密算法套件(对称加密算法),发送自己的数字证书(包含公钥、颁发机构等信息)、一个随机数(Server Random)以及确认信息给浏览器。
-
证书验证: 浏览器收到服务器的证书后,会进行严格的验证(合法性验证):
-
验证证书链: 检查证书是否由浏览器信任的证书颁发机构签发。CA 是公认的、负责验证网站身份并签发数字证书的第三方机构(如 DigiCert, Let's Encrypt, GlobalSign 等)。
-
验证域名: 检查证书中声明的域名是否与你正在访问的网站域名一致。
-
验证有效期: 检查证书是否在有效期内。
-
验证吊销状态: 通过 OCSP 或 CRL 等方式检查证书是否已被 CA 吊销。
-
-
生成会话密钥:
-
如果证书验证通过,浏览器会生成另一个随机数(Pre-Master Secret)。
-
浏览器用服务器证书中包含的公钥加密这个
Pre-Master Secret
,发送给服务器。 -
服务器用自己的私钥解密得到
Pre-Master Secret(非对称加密算法)
。 -
客户端和服务器现在都拥有了三个随机数:
Client Random
、Server Random
和Pre-Master Secret
。它们使用双方协商好的算法,独立计算出相同的会话密钥。这个会话密钥是对称密钥,用于后续实际数据传输的加密和解密。
-
-
完成握手: 双方交换使用会话密钥加密的完成消息,验证握手过程是否成功且未被篡改。至此,安全的 TLS 通道建立完成。
2> 加密数据传输
-
握手完成后,后续所有的 HTTP 请求和响应数据都会通过这个已建立的 TLS 安全通道进行传输。
-
使用握手阶段协商好的对称加密算法(如 AES)和会话密钥对数据进行加密。
-
接收方使用相同的会话密钥对数据进行解密。
-
同时,使用握手阶段协商好的消息认证码算法(如 HMAC)来保证数据的完整性,防止传输中被篡改。
2.2 关键技术
1> 对称加密算法
概念:用于实际数据传输。加密和解密使用同一个密钥(会话密钥)。相比非对称加密,速度更快,效率更高。常见的算法有 AES(Advanced Encryption Standard)、ChaCha20。
工作过程:对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率。
例如:AES128和AES256主要区别是密钥长度不同(分别是128bits,256bits)、加密处理轮数不同(分别是10轮,14轮),后者强度高于前者。
加密:明文 + 密钥 -> 密文解密:密文 + 密钥 -> 明文
优点:算法公开、计算量小、加密速度快、加密效率高。
缺点:相对来说不算特别安全,只有一把钥匙,密文如果被拦截,且密钥也被劫持,那么,信息很容易被破译。
2> 非对称加密
概念:非对称加密算法需要两个密钥:公开密钥(public key) 和私有密(private key),公开密钥和私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。服务器持有私钥(必须严格保密),公开分发公钥(包含在证书中)。常见的算法有 RSA、ECC(椭圆曲线密码学)。
优点:安全性比对称加密高
缺点:算法复杂,加密、解密速度没有对称加密解密的速度快。公钥是公开的,如果被黑客截获,其可以使用公钥进行解密,获取其中的内容。
3> 对称加密和非对称加密组合
先通过非对称加密,传送对称加密的密钥(防止密钥被破解);之后通过密钥,进行对称加密传输数据(防止因非对称加密公钥暴露造成的数据被破解)。
存在的缺陷:
- 通信方身份可能被伪装--->解决:数字证书
- 报文可能遭篡改--->解决:数字签名
4> 数字证书
核心作用:
-
身份绑定:将服务器的公钥与其身份信息(主要是域名)进行强关联。
-
信任传递:通过可信第三方的签名,证明该绑定的有效性。客户端只需预置少量根证书,即可信任全球数百万网站。
-
安全分发公钥:为客户端提供可信的服务器公钥,用于后续加密和签名验证。防止中间人攻击者伪造公钥(例如,攻击者声称自己的公钥属于
bank.com
)。
证书的主要组成结构:签名算法、颁发者、有效期、主体(域名、组织等)、主体的公钥(公钥算法、服务器公钥)、数字签名、序列号(由 CA 分配的唯一标识符,用于追踪和撤销证书)
证书的生命周期:
1、生成密钥对:服务器生成非对称加密密钥对,私钥严格保密
2、证书签名请求:服务器创建CSR文件(包含主体信息、公钥、用私钥对CSR内容签名)
3、CA验证与签发:CA验证信息真实性,审核通过后,CA用自己的私钥对CSR中的信息签名,生成数字证书
4、部署证书:服务器安装证书(通常与私钥一起配置在 Web 服务器如 Nginx/Apache)
5、客户端检验(TLS握手):客户端检查证书中的域名、有效期、通过证书链验证CA签名(详见下文)、检查撤销状态(通过 CRL 或 OCSP),全部验证通过后,信任证书中的公钥。
6、撤销与更新:若私钥泄露,CA 将证书加入撤销列表(CRL/OCSP);证书到期前需重新申请(自动化工具如 Certbot 可自动续签)。
信任链:客户端不直接信任服务器证书,而是信任一个层级化的信任链
根证书(Root CA) → 中间证书(Intermediate CA) → 服务器证书(End-Entity)
- 根证书:由CA自己签发,预设在操作系统/浏览器中,严格离线存储,根密钥泄漏风险低
- 中间证书:由根证书签发,可设置多层,必须与服务器证书一起发送给客户端(否则链不完整),用于实际签发服务器证书
- 验证过程(客户端逐级验证签名):
-
用根证书的公钥验证中间证书的签名。
-
用中间证书的公钥验证服务器证书的签名。
-
任一环节失败即终止连接(如浏览器显示
NET::ERR_CERT_AUTHORITY_INVALID
)
-
在浏览器如何查看证书:
5> 数字签名
核心目的:
- 身份认证:证明客户端正在通信的服务器确实是它声称的那个实体(例如
www.example.com
),而不是一个中间人伪造的服务器。 -
数据完整性: 确保在握手过程中传输的关键信息(特别是服务器的公钥和证书信息)没有被篡改。
工作原理(以服务器向客户端证明身份为例):
1、证书申请与签发
2、TLS握手:服务器发送证书
3、客户端验证签名(核心步骤):
客户端(浏览器)收到服务器的证书。
提取信息: 客户端从证书中提取出:
TBS
:待签名的核心数据部分(包含服务器域名、公钥、有效期等)。
签名算法
:CA 使用的签名算法(例如sha256WithRSAEncryption
)。
签名值
:CA 对该证书的签名结果。获取 CA 公钥:
客户端操作系统和浏览器内置了一个受信任根证书存储库,里面包含了各大受信任 CA 的根证书及其公钥。
客户端根据证书中的
Issuer
字段找到对应的根证书(或中间证书链,最终追溯到根证书)。客户端从根证书(或链中已验证的上级证书)中提取出该 CA 的公钥。
验证签名:
客户端使用 CA 的公钥对证书中的
签名值
进行解密操作(非对称加密的特性:私钥加密只能用对应的公钥解密)。解密得到的结果是 CA 当初对
TBS
数据进行哈希计算后得到的摘要(Digest)。客户端自己使用证书中指定的哈希算法(如 SHA-256)对收到的
TBS
数据进行哈希计算,得到一个新的摘要。关键比对: 客户端将解密得到的摘要与自己计算出的摘要进行比对。
匹配: 验证成功!这意味着:
证书确实是由该 CA 用其私钥签发的(身份来源可信)。
证书中的核心信息 (
TBS
) 自签发以来没有被篡改过(数据完整)。不匹配: 验证失败!客户端会发出严重警告(如浏览器显示红色锁、证书错误页面),阻止用户继续访问,因为这可能意味着:
证书是伪造的。
证书在传输过程中被篡改。
签发证书的 CA 不受客户端信任(根证书不存在或不受信任)。
4、后续信任建立:
一旦客户端成功验证了服务器证书的签名,它就信任该证书中包含的服务器的公钥是真实有效的。
客户端会使用这个服务器的公钥进行后续操作:
在 RSA 密钥交换中:加密生成一个预主密钥发送给服务器(只有拥有对应私钥的服务器才能解密)。
在 ECDHE 密钥交换中:验证服务器发送的 ECDHE 参数(公钥)的签名(服务器用其私钥签名,客户端用刚验证过的公钥验证),确保参数未被篡改。
双方基于交换的密钥材料生成最终用于加密 HTTP 数据的会话密钥。
数字签名的生成:
将要发送的数据先用Hash算法(摘要算法、散列算法)生成消息摘要,然后用发送者的私钥加密生成数字签名,与原文一起传送给接收者。
数字签名的校验:
接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与上一步得到的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
3、作用
-
保护用户隐私: 防止登录凭证、信用卡号、个人信息、聊天记录、浏览历史等敏感数据在传输中被窃听(如在不安全的公共 Wi-Fi 上)。
-
防止数据篡改: 确保用户看到的网页内容、下载的文件没有被中间人植入恶意代码或广告。
-
验证网站身份: 帮助用户确认访问的是真正的银行、购物网站等,而不是钓鱼网站,防止中间人攻击。
-
建立信任: 浏览器地址栏显示的锁图标和 "HTTPS" 字样是重要的信任标识,用户会更放心地使用该网站进行敏感操作。
-
现代 Web 功能要求: 许多新的 Web API(如地理位置、Service Workers、Web Push、HTTP/2 和 HTTP/3 的许多优化特性)都要求网站部署 HTTPS。
-
SEO 优势: 谷歌等搜索引擎明确表示 HTTPS 是搜索排名的一个正面信号。
-
合规性要求: 许多行业法规(如支付卡行业数据安全标准 PCI DSS、GDPR)强制要求使用 HTTPS 保护用户数据。
相关文章:

应用层协议:HTTPS
目录 HTTPS:超文本传输安全协议 1、概念 2、通信过程及关键技术 2.1 通信过程 1> TLS握手协商(建立安全通道) 2> 加密数据传输 2.2 关键技术 1> 对称加密算法 2> 非对称加密 3> 对称加密和非对称加密组合 4> 数…...

【ArcGIS技巧】—村庄规划规划用地规划状态字段生成工具
"国土空间规划后续也是走向数据治理,数据建库已经是涉及到城市规划、建筑、市政、农业、地理信息、测绘等等方方面面。不得不说以后数据库建设跟维护,是很多专业的必修课。小编就湖南省的村庄规划建库过程中规划用地用海中规划状态字段写了个小工具…...
React从基础入门到高级实战:React 实战项目 - 项目三:实时聊天应用
React 实战项目:实时聊天应用 欢迎来到本 React 开发教程专栏 的第 28 篇!在前 27 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和架构模式等核心知识。这一次,…...
Go语言中的if else控制语句
if else是Go语言中最基础也最常用的条件控制语句,用于根据条件执行不同的代码块。下面我将详细介绍Go语言中if else的各种用法和特性。 1. 基本语法 1.1. 最简单的if语句 if 条件表达式 {// 条件为true时执行的代码 } 示例: if x > 10 {fmt.Prin…...

【PCIe总线】-- inbound、outbound配置
PCI、PCIe相关知识整理汇总 【PCIe总线】 -- PCI、PCIe相关实现 由之前的PCIe基础知识可知,pcie的组成有:RC(根节点)、siwtch(pcie桥)、EP(设备)。 RC和EP,以及EP和EP能…...

分布式锁实战:Redisson vs. Redis 原生指令的性能对比
分布式锁实战:Redisson vs. Redis 原生指令的性能对比 引言 在DIY主题模板系统中,用户可自定义聊天室的背景、图标、动画等元素。当多个运营人员或用户同时修改同一模板时,若没有锁机制,可能出现“甲修改了背景色,乙…...
MyBatis中foreach集合用法详解
在 MyBatis 中,<foreach> 标签用于遍历集合(Collection、List、Array、Map),常用于构建动态 SQL 语句(如 IN 查询、批量插入等)。以下是详细用法和示例: 核心属性 属性描述collection必填…...

react+taro 开发第五个小程序,解决拼音的学习
1.找一个文件夹 cmd 2.taro init 3.vscode 找开该文件夹cd help-letters 如:我的是(base) PS D:\react\help-letters> pnpm install 4.先编译一下吧。看下开发者工具什么反应。 pnpm dev:weapp 5.开始规则。我用cursor就是不成功。是不是要在这边差不多了&…...
高防IP可以防护什么攻击类型?企业网络安全的第一道防线
“高防IP”成为企业构建网络安全防护体系的重要一环。尤其是对于金融、电商、游戏、政务等业务高度依赖网络稳定性的行业而言,确保系统724小时正常运行已经成为基本要求。高防IP到底可以防护哪些攻击类型?它又是如何帮助企业抵御风险、保障服务稳定运行的…...
Wireshark使用教程(含安装包和安装教程)
Wireshark使用入门教程 0.资源下载以及软件安装1.Wireshark中无法显示网卡列表2.Wireshark抓取H264过程 0.资源下载以及软件安装 参考blog: 抓包神器wireshark安装保姆级教程 压缩包下载:Wireshark安装包 1.Wireshark中无法显示网卡列表 Wireshark中无法显示网…...
Asp.Net Core基于StackExchange Redis 缓存
NuGet安装 StackExchange.Redis Microsoft.Extensions.Options 0. appsettings.json初始化配置 {"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHos…...
【Linux】SSH:免密登录
配置 SSH 的免密登录(基于公钥认证)可实现无需输入密码即可登录远程主机,常用于自动化脚本、服务器集群、DevOps 等场景。 生成本地 SSH 密钥对(若尚未存在) 在本地客户端执行: ssh-keygen -t rsa -b 409…...

kafka(windows)
目录 介绍 下载 配置 测试 介绍 Kafka是一个分布式流媒体平台,类似于消息队列或企业信息传递系统。 下载 Kafka对于Zookeeper是强依赖,所以安装Kafka之前必须先安装zookeeper 官网:Apache Kafka 下载此安装包并解压 配置 新建log…...
深度学习习题3
1.训练神经网络过程中,损失函数在一些时期(Epoch)不再减小, 原因可能是: 1.学习率太低 2.正则参数太大 3.卡在了局部最小值 A1 and 2 B. 2 and 3 C. 1 and 3 D. 都是 2.对于分类任务,我们不是将神经网络中的随机权重…...
勒让德多项式
勒让德多项式 (Legendre) 当区间为 [ − 1 , 1 ] [-1,1] [−1,1],权函数 ρ ( x ) 1 ρ(x)1 ρ(x)1时,由 1 , x , . . . , x n , . . . {1,x,...,x^n,...} 1,x,...,xn,...正交化得到的多项式称为勒让德多项式,并用 P 0 ( x ) , P 1 ( x ) ,…...
atc abc409E
原题链接:E - Pair Annihilation 题目背景: n 个点 n - 1 条边的有权无向图,每个点都有一个值,两个连通的点的值可以互相抵消,既将u 的 -1 传给 v 时可以抵消掉 v 的 1 并花费边权值;求最小花费。 考察算…...
Mysql批处理写入数据库
在学习mybatisPlus时,看到一个原本没用过的参数: rewriteBatchedStatementstrue 将上述代码装入jdbc的url中即可使数据库启用批处理写入。 需要注意的是,这个参数仅适用于MySQL JDBC 驱动的私有扩展参数。 作用原理是: 原本的…...

基于安卓的文件管理器程序开发研究源码数据库文档
摘 要 伴随着现代科技的发展潮流,移动互联网技术快速发展,各种基于通信技术的移动终端设备做的也越来越好了,现代智能手机大量的进入到了我们的生活中。电子产品的各种软硬技术技术的发展,操作系统的不断更新换代,谷歌…...

EMC VNXe 存储系统日志收集方法
写在前面 有朋友找来看看VNXe的故障,这种问题总是要收集日志,顺便这里也分享给大家。 注意,VNXe和VNX 属于完全不同的产品,不要看名字很类似,操作系统已经完全重构了,如果说是否有联系,大概就…...
嵌入式链表操作原理详解
嵌入式链表操作原理详解 链表是嵌入式软件开发中最基础的数据结构之一,其设计采用嵌入式链表节点的思想,实现了高度通用的链表管理机制。以下是核心原理和操作的全面解析: 一、基础数据结构 struct list_head {struct list_head *next, *pr…...

从“人找政策”到“政策找人”:智能退税ERP数字化重构外贸生态
离境退税新政核心内容与外贸企业影响 (一)政策核心变化解析 退税商店网络扩容 新政明确鼓励在大型商圈、旅游景区、交通枢纽等境外旅客聚集地增设退税商店,并放宽备案条件至纳税信用M级企业。以上海为例,静安区计划新增1000家退…...
一.设计模式的基本概念
一.核心概念 对软件设计中重复出现问题的成熟解决方案,提供代码可重用性、可维护性和扩展性保障。核心原则包括: 1.1. 单一职责原则 定义:一个类只承担一个职责,避免因职责过多导致的代码耦合。 1.2. 开闭原则 定义…...

以人类演示视频为提示,学习可泛化的机器人策略
25年5月来自清华大学、上海姚期智研究院和星动纪元(RoboEra)公司的论文“Learning Generalizable Robot Policy with Human Demonstration Video as a Prompt”。 最近的机器人学习方法通常依赖于从通过遥操作收集的大量机器人数据集中进行模仿学习…...
split方法
在编程中,split 方法通常用于将字符串按照指定的分隔符拆分成多个部分,并返回一个包含拆分结果的列表(或数组)。不同编程语言中的 split 方法语法略有不同,但核心功能相似。以下是常见语言中的用法: 1. P…...

SOC-ESP32S3部分:36-适配自己的板卡
飞书文档https://x509p6c8to.feishu.cn/wiki/RP4UwPrsKi4xuQkKLAAcKxD3n1b 如果你自己画了PCB板,需要把自己绘制的板卡配置小智AI工程,可以参考此文档。 下载源码 克隆或下载源码到本地,这里以1.5.5为例,大家可以自行修改其它版…...

LLMs 系列科普文(8)
八、模型的自我认知 接下来我们聊聊另一种问题,即模型的自我认知。 网上经常经常可以看到人们会问大语言模型一些关于认知方面的问题,比如“你是什么模型?谁创造了你?” 说实话,其实这个问题有点无厘头。 之所以这么…...
【明日方舟 × 红黑树】干员调度如何不掉线?算法工程的平衡魔法全揭秘!
【明日方舟 红黑树】干员调度如何不掉线?算法工程的平衡魔法全揭秘! 作者:星之辰 标签:#红黑树 #明日方舟 #工程平衡树 #算法科普 #动态数据结构 引子:为什么你的干员调度能实时平衡,从不崩盘?…...
Vue3 + Vite 中使用 Lodash-es 的防抖 debounce 详解
Vue3 Vite 中使用 Lodash-es 的防抖(debounce)详解 在 Vue3 Vite 项目中,debounce 是 lodash-es 中最常用的功能之一,它可以帮助我们优化高频事件的处理。下面我将详细讲解 debounce 的使用方法,并提供一个完整的示例。 Debounce 核心概念…...

机器学习基础相关问题
机器学习相关的基础问题 K-means是否一定会收敛 K-means是否一定会收敛 K-means算法在有限步数内一定会收敛,但收敛到的可能是局部最优解而非全局最优解。以下是详细分析: K-means 的优化目标是最小化 样本到其所归属簇中心的距离平方和(SSE…...

验证负载均衡与弹性伸缩
什么是弹性伸缩(Auto Scaling)? 弹性伸缩是指 云计算平台根据实时负载自动调整计算资源(如服务器实例、容器Pod)数量,以确保系统在高峰时保持稳定,在低谷时节省成本。 什么时候会触发弹性伸缩&…...