良许Linux教程网 干货合集 详解SSL握手具体流程

详解SSL握手具体流程

SSL握手有三个目的:客户端与服务器需要就一组用于保护数据的算法达成一致、它们需要确立一组由那些算法所使用的加密密钥、握手还可以选择对客户端进行认证,下面为大家详细讲解一下SSL握手具体流程。

详解SSL握手具体流程

概述

SSL(Secure Socket Layer)安全套接字协议是运行在应用层和TCP层之间的安全机制。保证上层应用数据传输的保密性、完整性以及传输双发身份的合法性。1.传输加密性:握手协议定义会话密钥后,所有传输的报文被会话密钥加密。2.消息的完整性:传输的报文中增加MAC(消息认证码),用于检测完整性。3.身份验证:客户端认证(可选),服务端认证(强制)

SSL协议包括:握手协议(Handshake protocol)、SSLpassword变化协议(SSL change cipher spec protocol)、警报协议(Alert protocol)、记录协议(Record protocol)。

握手协议是SSL连接通信的第一个子协议也是最复杂的协议。SSL握手协议详细流程SSL握手协议详细流程

SSL握手协议

通过握手过程,客户端与服务端之间协商会话参数(包括相互验证、协商加密和MAC算法、生成会话密钥等)。SSL握手协议详细流程SSL握手协议详细流程

第一阶段:建立安全能力

客户端-client_hello:1.客户端可以支持的SSL最高版本号;2.客户端生成的32字节的随机数;3.会话标识符ID;4.客户端可以支持的密码套件列表;5.客户端可以支持的压缩方法列表。

服务端-server_hello:1.SSL版本号,取收到的客户端SSL版本和服务端支持的最高版本中的较低者;2.服务端生成的32字节的随机数;3.会话标识符ID;4.从收到的客户端密码套件列表中选择一个密码套件(包含密钥交换算法、对称加密算法、摘要算法);5.从收到的客户端压缩方法列表中选择一种压缩方法。

第二阶段:服务端验证和密钥交换

服务端-certificate:含有公钥信息的服务端数字证书或到CA的完整证书链。

服务端-server_key_exchange:可选,根据密钥协商算法而定,如果传送给客户端的服务端证书数据不足以按照第一阶段选定的密钥交换算法协商密钥,该步骤不足密钥协商元素。

服务端-certificate_request:可选,请求验证客户端证书信息,单向数据认证(只认证服务端)无此步骤。

服务端-server_hello_done:通知客户端版本号和加密套件协商结束。

第三阶段:客户端验证和密钥交换

客户端-certificate:可选,客户端数字证书,双向数据认证中服务端要求验证客户端身份合法性。

客户端-client_key_exchange:客户端交换密钥,视密钥交换算法而定,密钥协商参数或pre-master key(服务端公钥加密)。

客户端-certificate_verify:可选,客户端将已交互的握手消息、会话密钥的摘要值用客户端私钥加密发送给服务端。

第四阶段:完成

客户端-change_cipher_spec:改变密码格式信息,告诉服务端之后的报文消息用会话密钥加密。

客户端-finished:向服务端宣布握手协议完成。

服务端-change_cipher_spec:改变密码格式信息,告诉客户端之后的报文消息用会话密钥加密。

服务端-finished:向客户端宣布握手协议完成。

以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

img
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部