当前位置: 首页 > 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确保了数据在传输过程中的安全性,防止数据被窃取或篡改。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 工业除尘的一些方法
  • 简要:JVM底层原理、JVM各类垃圾收集器的使用及核心参数的调优、JVM 调优
  • Makefile自动依赖
  • package.json的 和 的区别,以及|| 和 | 的区别
  • 告别杂音,从 AI 音频降噪开始
  • 文件上传绕过最新版安全狗
  • CENTOS9+RSYSLOG+LOGROTATE收集日志
  • AI融合新突破:CNN与Transformer的强强联合!
  • 收银系统源码—多商户平台入驻商城+门店线下收银
  • 英伟达元宇宙平台Omniverse的学习,技术调研
  • 缺失值处理方法:代数/统计/机器学习算法补全数据(附Python-sklearn代码精美可视化绘图)
  • C# 事件总线 Event Bus
  • STM32G070KBT6的RTC HAL库使用
  • FFmpeg For Android入门NDK打印版本号
  • python自动化笔记:os模块和异常处理
  • [LeetCode] Wiggle Sort
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • HomeBrew常规使用教程
  • JS笔记四:作用域、变量(函数)提升
  • node.js
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 马上搞懂 GeoJSON
  • 每天一个设计模式之命令模式
  • 如何编写一个可升级的智能合约
  • 消息队列系列二(IOT中消息队列的应用)
  • 一文看透浏览器架构
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #include
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (1)(1.13) SiK无线电高级配置(六)
  • (C++)八皇后问题
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (算法)Game
  • (五)Python 垃圾回收机制
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET Reactor简单使用教程
  • .net 无限分类
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .Net8 Blazor 尝鲜
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @Bean注解详解
  • @media screen 针对不同移动设备