SSL 协议的工作原理

简介: SSL/TLS握手分两阶段:先安全协商(验证身份、选算法、生成会话密钥),再加密传输业务数据。TLS 1.3优化为1-RTT,ECDHE保障前向安全,证书由CA背书防中间人攻击。(239字)

整体流程分为两大阶段

  1. SSL 握手阶段(协商,不传输业务数据)
  2. 数据传输阶段(加密收发业务数据)

1、SSL 握手过程(简化版)

① 客户端发起连接(Client Hello)

浏览器 / 客户端发给服务器:

  • 支持的 TLS 版本(TLS1.2 / TLS1.3)
  • 支持的加密套件列表(加密算法、哈希算法)
  • 客户端随机数 Random_C

② 服务器回应(Server Hello)

服务器返回:

  • 选定双方都支持的 TLS 版本
  • 选定一套加密套件
  • 服务器随机数 Random_S
  • 服务器 SSL 证书(包含服务器公钥、CA 签名、域名信息)

TLS1.3 会把很多步骤合并,减少往返次数。

免费SSL:打开JoySSL官网填写注册码(230907)即可开始申请免费的SSL证书

③ 客户端校验证书

客户端用根 CA 公钥验证证书签名:

  • 确认证书没有被篡改
  • 确认证书域名和访问网站域名一致
  • 确认证书没过期、没被吊销

证书作用:证明这个服务器确实是它声称的网站,防止钓鱼伪装。

证书校验失败,浏览器直接报不安全警告。

④ 协商生成会话密钥(两种方式:RSA 密钥交换 / ECDHE 椭圆曲线密钥交换)

方式 A:RSA 模式(旧,现在少用)

  1. 客户端生成一个预主密钥 Pre‑Master Secret
  2. 使用服务器公钥加密 Pre‑Master Secret发给服务端
  3. 只有服务器私钥可以解密拿到 Pre‑Master Secret
  4. 客户端 + 服务器,两边用:Random_C + Random_S + Pre‑Master Secret 通过密钥派生函数,算出会话密钥(对称密钥)

缺点:如果服务器私钥泄露,所有过往抓包都可以解密。

方式 B:ECDHE(现在主流,前向安全)

  1. 客户端、服务器各自生成一对椭圆曲线公私钥
  2. 互相交换公钥
  3. 双方各自本地运算,得到同一个 Pre‑Master Secret,Pre‑Master Secret 不会在网络上传输
  4. 再结合两个随机数,派生会话密钥

前向安全:就算服务器私钥泄露,过去的通信记录依然无法解密。

⑤ 握手完成

客户端、服务器互相发送「Finished」消息,消息是加密校验值,确认两边算出来的密钥完全一致。握手结束,后续正式业务数据全部用会话对称密钥加密传输。

会话密钥是对称密钥:加密解密同一把钥匙,速度快,适合大量网页数据传输。


2、数据传输阶段

握手完成后进入加密通信:

  1. 发送方:明文 → 对称加密 + MAC 完整性校验
  2. 网络传输密文,就算被抓包,第三方看不懂内容
  3. 接收方:用会话密钥解密,校验 MAC,判断数据有没有被篡改

3、会话恢复(Session ID / Session Ticket)

每次完整握手消耗 CPU,访问同一个网站多次可以复用会话:

  • Session ID:服务器保存会话状态
  • Session Ticket:服务器把会话加密打包发给客户端保存,服务器不用存状态,TLS1.3 主要用 Ticket。减少握手耗时,打开网页更快。

关键概念区分

  1. 非对称加密(公钥私钥) :只用于握手阶段,用来协商密钥、身份认证;运算慢,不传业务数据。
  2. 对称加密:真正传输网页、接口数据,速度快。
  3. 数字证书:CA 机构背书,解决公钥是谁的信任问题,不然公钥可以被中间人替换。

中间人攻击为什么 SSL 可以防御

中间人可以拦截流量,但:

  • 无法伪造合法 CA 签名的证书;
  • ECDHE 下拿不到预主密钥;
  • 没有服务器私钥就解密不出会话密钥。

如果用户手动信任了恶意根证书,SSL 防护就失效。

TLS1.2 vs TLS1.3 主要差异

1.2:握手需要 2‑3 次往返;1.3:精简握手,1‑2 次往返,速度更快,淘汰大量不安全加密套件。


通俗比喻

客户端:我想和你秘密说话,我这边有一堆加密方案,给你一个随机暗号 A。服务器:好,我们用这套方案,给你随机暗号 B,这是我的官方身份证(证书)。客户端:查验身份证没问题,我们俩一起算出一把只有我们知道的聊天密码。之后所有聊天内容,全部用这把共同密码加密说话。

相关文章
|
20天前
|
存储 数据采集 监控
RFID人员定位实时监控与自动化智能管控
RFID人员定位智能管控系统利用射频识别技术,实时采集人员标签信息,实现精准定位、轨迹追踪、电子围栏预警、SOS求救、自动考勤与应急疏散等功能,广泛应用于工业、工地、监狱及园区等场景,提升安全管理水平与运营效率。(239字)
|
20天前
|
人工智能 自然语言处理 测试技术
Cline(VSCode 智能编程插件)完整实操:对接百炼 Coding Plan 与 Token Plan 全流程教程
随着AI辅助开发不断进化,传统代码补全插件已经难以满足复杂工程的开发诉求。普通补全工具大多只能生成局部代码片段,无法完成需求拆解、多文件修改、终端执行命令、自动化测试等完整工作。Cline是一款运行于VSCode环境的开源AI编程代理插件,区别于普通的代码补全工具,它拥有任务规划、文件读写、终端命令执行、浏览器自动化、MCP工具扩展整套能力,可以把自然语言需求转化成完整可运行的项目代码。同时插件完整兼容OpenAI兼容协议,能够无缝对接百炼平台,支持Coding Plan与Token Plan两套订阅方案,开发者可以直接在编辑器内部调用通义千问系列大模型,实现从需求描述、代码生成、调试运行到测
263 0
|
机器学习/深度学习 存储 数据挖掘
Google Colab:云端的Python编程神器
Google Colab,全名Google Colaboratory,是Google Research团队开发的一款云端编程工具,它允许任何人通过浏览器编写和执行Python代码。Colab尤其适合机器学习、数据分析和教育目的。它是一种托管式Jupyter笔记本服务,用户无需设置,就可以直接使用,同时还能获得GPU等计算资源的免费使用权限。
2484 0
Google Colab:云端的Python编程神器
|
8月前
|
人工智能 自然语言处理 搜索推荐
金融智能客服的“模力时刻”:大模型驱动下的技术跃迁
如何手搓一个“有活人感”的金融智能客服?
705 2
|
2月前
|
人工智能 API 开发工具
阿里云百炼 Coding Plan 完整指南:Pro 版定价、每日抢购规则、免费 Tokens 领取与接入教程
阿里云百炼Coding Plan是专为AI编程打造的订阅服务,现仅售Pro高级版(200元/月),每日9:30限量抢购。含9万次/月调用额度(5小时6000次、每周4.5万次),支持Qwen、Kimi、GLM等多模型及图片理解,兼容主流编程工具。在阿里云百炼官网:https://t.aliyun.com/U/fPVHqY 免费领取千万Tokens
369 0
|
7月前
|
人工智能 自然语言处理 搜索推荐
企业如何把智能客服系统用好?2026年瓴羊 Quick Service 实战指南
2026年,智能客服已成企业标配,但仅35%能释放全效。瓴羊Quick Service融合通义千问大模型,提供AI问答、辅助坐席、动态知识库三大能力,支持分阶段落地,助力企业从“用上”迈向“用好”,实现服务升级与业务增长双突破。(239字)
|
3月前
|
人工智能 JSON 搜索推荐
再见百度,我用 1 小时,开发了个 AI 搜索引擎!Codex + GPT 5.5 + DeepSeek V4 真香~
大家好,我是程序员鱼皮。 想必你已经发现了,如今的搜索引擎已经全面进化了。 以前搜东西,就是输入关键词,然后在一堆蓝色链接里挑着看。 现在呢,直接输入一个问题,AI 会帮你联网搜索、汇总分析,给出一份带引用来源的完整回答。 比如主打 AI 搜索的 Perplexity,据说月活用户已经突破 1 亿了;Google、百度、必应也都在搜索结果里加了 AI 智能摘要。 搜索这件事,正在从「人找信息」变成
199 0
|
8月前
|
人工智能 自然语言处理 安全
什么是智能客服?2026 年AI时代智能客服新标杆
2026年,智能客服已成企业数字化转型核心引擎。全球市场规模达389亿美元,中国渗透率78.3%,银行业部署率达91%。瓴羊Quick Service依托大模型、全渠道接入、智能知识库与人机协同,助力企业降本增效、提升体验、驱动业务创新。(239字)
|
10月前
|
自然语言处理 前端开发
基于Tauri2.9+Vite7.1+Vue3+Pinia3+ElementPlus客户端admin后台系统模板
最新研发tauri2.9+vite7.1+vue3 setup+pinia3+element-plus桌面版高颜值轻量级中后台管理系统TauriVue3Admin。
527 7
|
安全 架构师 Java
Java大厂面试高频:Collection 和 Collections 到底咋回答?
Java中的`Collection`和`Collections`是两个容易混淆的概念。`Collection`是集合框架的根接口,定义了集合的基本操作方法,如添加、删除等;而`Collections`是一个工具类,提供了操作集合的静态方法,如排序、查找、同步化等。简单来说,`Collection`关注数据结构,`Collections`则提供功能增强。通过小王的面试经历,我们可以更好地理解这两者的区别及其在实际开发中的应用。希望这篇文章能帮助你掌握这个经典面试题。
554 4