当前位置: 首页 > news >正文

HTTPS链接建立的过程

HTTPS(HyperText Transfer Protocol Secure)建立链接的过程主要是通过TLS(Transport Layer Security)协议来实现的。HTTPS的链接建立过程可以分为以下几个步骤:

1. **客户端发起请求**


   - 客户端向服务器发送一个请求,请求建立一个安全连接。这个请求通常包括客户端支持的TLS版本、加密算法、压缩方法等。

2. **服务器响应**


   - 服务器接收到请求后,会选择一个TLS版本和加密算法,并将其发送给客户端。同时,服务器还会发送自己的数字证书,数字证书中包含服务器的公钥以及由权威机构(CA)签名的服务器身份信息。

3. **客户端验证服务器证书**


   - 客户端接收到服务器的数字证书后,会验证证书的有效性。验证过程包括检查证书是否由受信任的CA签名、证书是否在有效期内、证书中的域名是否与服务器域名匹配等。如果证书验证失败,客户端会终止连接。

4. **客户端生成会话密钥**


   - 验证通过后,客户端生成一个随机的对称加密密钥(称为会话密钥),并使用服务器的公钥加密这个会话密钥。

5. **客户端发送加密的会话密钥**


   - 客户端将加密的会话密钥发送给服务器。由于会话密钥是用服务器的公钥加密的,只有服务器能够解密获取会话密钥。

6. **服务器解密会话密钥**


   - 服务器接收到加密的会话密钥后,使用自己的私钥解密,获取到会话密钥。

7. **双方使用会话密钥进行通信**


   - 此时,客户端和服务器都持有相同的会话密钥。后续的通信过程将使用对称加密算法和这个会话密钥进行加密和解密。

8. **握手结束,安全通信开始**


   - 握手过程结束,客户端和服务器开始使用会话密钥进行加密通信,保证数据的机密性和完整性。

举个例子

假设你在浏览器中访问一个HTTPS网站,比如 `https://www.example.com`。这个过程会如下进行:

1. **客户端发起请求**:
   - 你输入网址并按下回车键,浏览器会向 `www.example.com` 服务器发送一个请求,要求建立安全连接。
   - 请求内容包括浏览器支持的TLS版本、加密算法等信息。

2. **服务器响应**:
   - `www.example.com` 服务器接收到请求后,选择一个TLS版本和加密算法,返回给浏览器。
   - 服务器同时发送自己的数字证书,证书中包含服务器的公钥和由权威CA签名的服务器身份信息。

3. **客户端验证服务器证书**:
   - 浏览器接收到服务器的证书后,会验证证书的有效性。如果证书有效,浏览器继续下一步;否则,浏览器会显示警告信息,提示用户连接不安全。

浏览器收到服务器的数字证书后,会进行一系列的验证操作:

  1. 验证证书的签名

    • 浏览器首先会检查证书是否由受信任的证书颁发机构(CA)签名。
    • 浏览器内部维护了一个受信任的CA列表。如果银行的证书是由这些受信任的CA签名的,浏览器就会认为签名有效。
    • 签名验证过程涉及使用CA的公钥解密证书中的签名信息,并与证书内容进行比对,确认内容未被篡改。
  2. 验证证书是否在有效期

    • 证书中包含了有效期的开始时间和结束时间。浏览器会检查当前日期是否在这个有效期内。
    • 如果证书已经过期或还未生效,浏览器会认为证书无效。
  3. 验证证书中的域名

    • 浏览器会检查证书中的域名信息(通常是 Common NameSubject Alternative Name)是否与当前访问的网站域名匹配。
    • 在这个例子中,证书中应该有 www.bankexample.com 的信息。如果域名不匹配,浏览器会认为证书无效,因为它可能是试图进行“中间人攻击”(MITM)。
  4. 检查证书的吊销状态

    • 浏览器还可能会检查证书是否被吊销(通过在线证书状态协议(OCSP)或证书吊销列表(CRL))。如果证书被标记为吊销,则意味着它不再被信任,可能是因为证书的私钥泄露或其他原因。

4. **客户端生成会话密钥**:
   - 验证通过后,浏览器生成一个随机的会话密钥,并使用服务器证书中的公钥加密这个会话密钥。

5. **客户端发送加密的会话密钥**:
   - 浏览器将加密的会话密钥发送给 `www.example.com` 服务器。

6. **服务器解密会话密钥**:
   - `www.example.com` 服务器使用私钥解密获取会话密钥。

7. **双方使用会话密钥进行通信**:
   - 浏览器和 `www.example.com` 服务器都持有相同的会话密钥,后续的所有数据传输都使用这个会话密钥进行加密和解密。

8. **握手结束,安全通信开始**:
   - 握手过程结束,浏览器与 `www.example.com` 服务器开始进行加密通信,确保数据传输的机密性和完整性。

通过上述步骤,HTTPS确保了数据在传输过程中的安全性,防止数据被窃取或篡改。

相关文章:

HTTPS链接建立的过程

HTTPS(HyperText Transfer Protocol Secure)建立链接的过程主要是通过TLS(Transport Layer Security)协议来实现的。HTTPS的链接建立过程可以分为以下几个步骤: 1. **客户端发起请求** - 客户端向服务器发送一个请求&…...

文档控件DevExpress Office File API v24.1 - 支持基于Unix系统的打印

DevExpress Office File API是一个专为C#, VB.NET 和 ASP.NET等开发人员提供的非可视化.NET库。有了这个库,不用安装Microsoft Office,就可以完全自动处理Excel、Word等文档。开发人员使用一个非常易于操作的API就可以生成XLS, XLSx, DOC, DOCx, RTF, CS…...

IP地址封装类(InetAddress类)

文章目录 前言一、IP地址是什么?二、IP地址封装类 1.常用方法2.实操展示总结 前言 当我们想要获取到通信对方的IP地址、主机地址等信息时,我们可以使用InetAddress类。InetAddress类在java的net包中。 一、IP地址是什么? IP地址 (Internet Pr…...

数据库设计规范化

在数据库设计中,尤其是在关系型数据库管理系统中,规范化(Normalization)是一种通过减少数据冗余和依赖关系来优化数据库表结构的过程。规范化可以确保数据的完整性和减少数据更新时的问题。规范化的过程通常遵循一系列标准或范式&…...

预约咨询小程序搭建教程,源码获取,从0到1完成开发并部署上线

目录 一、明确需求与规划功能 二、选择开发工具与模板 三、编辑小程序内容 四、发布与运营 五、部分代码展示 制作一个预约咨询小程序,主要可以分为以下几个步骤: 一、明确需求与规划功能 明确需求: 1.确定小程序的服务对象&#xf…...

leetcode217. 存在重复元素,哈希表秒解

leetcode217. 存在重复元素 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 示例 1: 输入:nums [1,2,3,1] 输出:true 示例 2&#x…...

QT:QString 支持 UTF-8 编码吗?

在 Qt 中,字符串的处理主要依赖于 QString 类。QString 内部并不是直接使用 UTF-8 编码来存储数据的。相反,QString 使用 Unicode(特别是 UTF-16)来存储文本,以支持多语言环境的国际化应用。这种设计使得 QString 能够…...

我主编的电子技术实验手册(13)——电磁元件之继电器

本专栏是笔者主编教材(图0所示)的电子版,依托简易的元器件和仪表安排了30多个实验,主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】,精心设计的【实验步骤】,全面丰富的【思考习…...

odoo from样式更新

.xodoo_form {.o_form_sheet {padding-bottom: 0 !important;border-style: solid !important;border-color: white;}.o_inner_group {/* 线框的样式 *//*--line-box-border: 1px solid #666;*//*box-shadow: 0 1px 0 #e6e6e6;*/margin: 0;}.grid {display: grid;gap: 0;}.row …...

Oracle(52)分区表有哪些类型?

分区表在Oracle数据库中主要分为以下几种类型: 范围分区(Range Partitioning)列表分区(List Partitioning)哈希分区(Hash Partitioning)组合分区(Composite Partitioning&#xff0…...

大黄蜂能飞的起来吗?

Bumblebee argument 虽然早期的空气动力学证明大黄蜂不能飞行——因为体重太重,翅膀太薄,但大黄蜂并不知道,所以照飞不误。 背景 在20世纪初,‌科学家们通过研究发现,‌大黄蜂的身体与翼展的比例失调,‌按照…...

虹科新品 | PDF记录仪新增蓝牙®接口型号HK-LIBERO CL-Y

新品发布!HK-LIBERO CE / CH / CL产品家族新增蓝牙接口型号HK-LIBERO CL-Y! PDF记录仪系列新增蓝牙接口型号 HK-LIBERO CL-Y HK-LIBERO CE、HK-LIBERO CH和HK-LIBERO CL,虹科ELPRO提供了一系列高品质的蓝牙(BLE)多用途…...

Bytebase 2.22.1 - SQL 编辑器展示更丰富的 Schema 信息

🚀 新功能 SQL 编辑器直接展示表,视图,函数,存储过程等各种 Schema 详情。OpenAI 功能进入社区版(免费),现在您可以通过配置自有 OpenAI key 在 SQL 编辑器中启用自然语言转 SQL 功能。支持在 …...

SQL Server Management Studio的使用

之前在 https://blog.csdn.net/fengbingchun/article/details/140961550 介绍了在Windows10上安装SQL Server 2022 Express和SSMS,这里整理下SSMS的简单使用: SQL Server Management Studio(SSMS)是一种集成环境,提供用于配置、监视和管理SQL…...

Python 爬虫项目实战一:抖音视频下载与网易云音乐下载

一、项目背景 随着互联网的发展,爬虫技术在数据采集和资源获取中发挥着重要作用。本文将以实际案例为例,使用Python语言实现两个热门的爬虫项目:抖音视频文件下载和网易云音乐下载。通过这些实例,读者可以了解如何利用Python编写…...

CAMDS=中国汽车MDS

1、定义和缩写 MSDS(材料安全数据表, Material Safety Data Sheets),德语为SDB(Sicherheitsdatenbltter),是一种传达材料和混合物安全相关信息的工具,包括来自供应链和下游用户相关材料安全报告的信息。它们旨在为专业用户提供使用这些物质和制剂的必要信息和处理建议,…...

【Golang 面试 - 进阶题】每日 3 题(十七)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…...

ROS 7上实现私网互通方案

一、背景: 第一个私网现状:连接公域网是由tp-link进行拨号链接使用动态公网ip,内部网段是192.168.1.0/24 第二个私网现状:连接公域网是机房的固定公网ip,内部网段为10.0.0.0/16二、目标 安全的打通192.168.1.0/24和10.0.0.0/16的网络, 使得前者局域网中的机器能够安全访…...

iOS企业签名过程中APP频繁出现闪退是什么原因?

企业签名中,我们总会遇到这样或者那样的问题,要么掉签,要么闪退,那在之前的文章,已不止一次跟大家说了掉签的问题,今天就跟大家详细的聊一聊闪退的问题,希望对大家的推广有所帮助。 其实不管是…...

Unity dots IJobParallelFor并行的数据写入问题

Unity dots IJobParallelFor并行的数据写入问题 [BurstCompile] public struct IncrementJob : IJobParallelFor { [ReadOnly] public NativeArray<int> baseValues; public NativeArray<int> resultValues; public void Execute(int index) {resultValu…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...

Redis上篇--知识点总结

Redis上篇–解析 本文大部分知识整理自网上&#xff0c;在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库&#xff0c;Redis 的键值对中的 key 就是字符串对象&#xff0c;而 val…...

【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法

使用 ROS1-Noetic 和 mavros v1.20.1&#xff0c; 携带经纬度海拔的话题主要有三个&#xff1a; /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码&#xff0c;来分析他们的发布过程。发现前两个话题都对应了同一…...

Copilot for Xcode (iOS的 AI辅助编程)

Copilot for Xcode 简介Copilot下载与安装 体验环境要求下载最新的安装包安装登录系统权限设置 AI辅助编程生成注释代码补全简单需求代码生成辅助编程行间代码生成注释联想 代码生成 总结 简介 尝试使用了Copilot&#xff0c;它能根据上下文补全代码&#xff0c;快速生成常用…...

PLC入门【4】基本指令2(SET RST)

04 基本指令2 PLC编程第四课基本指令(2) 1、运用上接课所学的基本指令完成个简单的实例编程。 2、学习SET--置位指令 3、RST--复位指令 打开软件(FX-TRN-BEG-C)&#xff0c;从 文件 - 主画面&#xff0c;“B: 让我们学习基本的”- “B-3.控制优先程序”。 点击“梯形图编辑”…...