【技术干货】SSL加密过程简介
  

高俊洪_广州办_技术支持 12817

{{ttag.title}}
【技术干货】SSL加密过程简介

      SSL加密包括两个部分,一个是建立加密隧道,一个是加密数据传输。其中,建立加密隧道使用非对称加密,而数据传输则是使用对称加密方式。

建立加密隧道过程,具体见下图

单向认证:


(1) SSL 客户端通过 Client Hello 消息将它支持的 SSL 版本、加密算法、密钥交换算法、MAC算法等信息发送给 SSL服务器。

(2) SSL 服务器确定本次通信采用的 SSL 版本和加密套件,并通过 Server Hello消息通知给 SSL 客户端。如果 SSL 服务器允许 SSL 客户端在以后的通信中重用本次会话,则 SSL 服务器会为本次会话分配会话 ID,并通过 Server Hello消息发送给 SSL客户端。

(3) SSL 服务器将携带自己公钥信息的数字证书通过Certificate 消息发送给 SSL客户端。

(4) SSL 服务器发送 Server Hello Done 消息,通知 SSL 客户端版本和加密套件协商结束,开始进行密钥交换。

(5) SSL 客户端验证 SSL 服务器的证书合法后,利用证书中的公钥加密 SSL 客户端随机生成的 premaster secret,并通过 Client Key Exchange消息发送给SSL服务器。

(6) SSL客户端发送 Change Cipher Spec消息,通知 SSL服务器后续报文将采用协商好的密钥和加密套件进行加密和 MAC计算。

(7) SSL 客户端计算已交互的握手消息(除 ChangeCipher Spec 消息外所有已交互的消息)的 Hash值,利用协商好的密钥和加密套件处理 Hash值(计算并添加 MAC 值、加密等),并通过 Finished 消息发送给 SSL 服务器。SSL服务器利用同样的方法计算已交互的握手消息的 Hash 值,并与 Finished 消息的解密结果比较,如果二者相同,且 MAC值验证成功,则证明密钥和加密套件协商成功。

(8)  同样地,SSL服务器发送Change Cipher Spec消息,通知 SSL客户端后续报文将采用协商好的密钥和加密套件进行加密和 MAC计算。

(9) SSL 服务器计算已交互的握手消息的 Hash 值,利用协商好的密钥和加密套件处理 Hash 值(计算并添加 MAC 值、加密等),并通过 Finished 消息发送给 SSL 客户端。SSL 客户端利用同样的方法计算已交互的握手消息的Hash 值,并与 Finished 消息的解密结果比较,如果二者相同,且 MAC值验证成功,则证明密钥和加密套件协商成功。 SSL客户端接收到SSL服务器发送的Finished消息后,如果解密成功,则可以判断SSL服务器是数字证书的拥有者,即SSL服务器身份验证成功,因为只有拥有私钥的SSL服务器才能从Client Key Exchange消息中解密得到premaster secret,从而间接地实现了SSL客户端对SSL服务器的身份验证。

双向认证:


SSL客户端的身份验证是可选的,由SSL服务器决定是否验证SSL客户端的身份。如图中蓝色部分标识的内容所示,如果SSL服务器验证SSL客户端身份,则SSL服务器和SSL客户端除了交互“只验证服务器的SSL握手过程”中的消息协商密钥和加密套件外,还需要进行以下操作:

(1) SSL服务器发送 Certificate Request消息,请求 SSL客户端将其证书发送给SSL服务器。

(2) SSL 客户端通过 Certificate 消息将携带自己公钥的证书发送给 SSL 服务器。SSL服务器验证该证书的合法性。

(3) SSL 客户端计算已交互的握手消息、主密钥的 Hash 值,利用自己的私钥对其进行加密,并通过 Certificate Verify消息发送给 SSL服务器。

(4) SSL 服务器计算已交互的握手消息、主密钥的 Hash 值,利用 SSL 客户端证书中的公钥解密 Certificate Verify消息,并将解密结果与计算出的 Hash值比较。如果二者相同,则 SSL客户端身份验证成功。

我们的SSL是双向认证(证书认证),不过我们允许SSL重协商。

打赏鼓励作者,期待更多好文!

打赏
1人已打赏

新手486484 发表于 2021-8-25 08:44
  
看帖学习,感谢分享                  
玉米 发表于 2021-8-25 08:37
  
看帖学习,感谢分享                  
新手612152 发表于 2020-3-24 12:53
  
感谢分享
鬼子姜 发表于 2019-5-7 14:34
  
看帖学习,感谢分享
sowkd 发表于 2019-4-29 00:34
  
现在的社区真好,解决了很多问题
XiaoYang 发表于 2017-6-11 10:44
  
学习了,虽然知道大概
weilai3460 发表于 2017-6-8 12:45
  
收藏了,谢谢!
石小囧 发表于 2017-5-31 10:55
  
学习一下
KeepSailing 发表于 2017-5-31 10:46
  
赞一个,多发这种技术贴,有助于更多了解设备的强大功能
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
干货满满
技术笔记
新版本体验
产品连连看
功能体验
2023技术争霸赛专题
技术咨询
信服课堂视频
标准化排查
社区帮助指南
秒懂零信任
技术晨报
自助服务平台操作指引
答题自测
安装部署配置
上网策略
SANGFOR资讯
通用技术
GIF动图学习
VPN 对接
项目案例
专家分享
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

26
76
83

发帖

粉丝

关注

本版达人

新手24268...

本周建议达人

阿凯

本周分享达人

新手39341...

本周提问达人