赞
踩
SSL 工作在应用层和传输层之间,—般用于终端到子网之间的通信,称为端到站的通信。
是由多个协议组成的两层协议集合,协议的上层有握手协议等四个协议,下层是记录层协议。
SSL握手协议 | SLL更改密码规格协议 | SSL警告协议 | HTTP协议 |
SSL记录协议 | |||
TCP | |||
IP |
SSL 协议中定义了三个更高层协议:握手协议、更改密码规格协议和警告协议。
握手协议的主要作用有两点:一是通信双方对彼此进行身份鉴别;二是协商连接会话所需的密码参数(如密码算法、密钥),其中各类密码算法组成的集合称为密码套件。握手协议工作流程如下图所示,分为四个主要的阶段。
阶段一:客户端向服务端发送 ClientHello 消息,服务端回应 ServerHello 消息。若服务端未回应,则产生一个致命错误并且断开连接。ClientHello 和 ServerHello 消息用于在客户端和服务端之间进行密码套件协商及确定安全传输能力(包括协议版本、会话标识等属性),并且产生和交换随机数。
阶段二:在客户端和服务端 Hello 消息之后是身份鉴别和密钥交换过程。在服务端发送完 Hello 消息之后,服务端将发送证书Server Certificate(签名证书和加密证书)和服务端密钥交换消息 Server Key Exchange(用于生成预主密钥)。如果服务端需要验证客户端身份,则向客户端发送证书请求消息 Certificate Request,之后发送服务端 Hello 完成消息Server Hello Done,表示 Hello 消息阶段已经结束,服务端等待客户端的返回消息。
阶段三:若服务端发送了一个证书请求消息 Certificate Request,客户端必须返回一个证书消息 Client Certificate。然后,客户端发送密钥交换消息 Client Key Exchange,消息内容取决于双方Hello消息协商出的密钥交换算法,
Eg1.如交换算法为 ECC,则客户端应产生46字节随机数与版本号一起构成预主密钥,并采用服务端的加密公钥进行加密并放在Client Key Exchange 消息中发送给服务端;
Eg2.如交换算法为 ECDHE,则Client Key Exchange消息包含计算预主密钥的客户端密钥交换参数。
同时,客户端根据双方的密钥交换消息生成预主密钥。如果客户端发送了证书消息 Client Certificate,那么也应发送一个带数字签名的消息Certificate Verify 供服务端验证客户端的身份。在对交换数据进行加密和签名计算时,交换数据的加密运算采用对方加密证书中的公钥来完成;交换数据的签名运算采用本方签名私钥来完成,而且签名计算的输入应包括加密证书。
阶段四:客户端发送密码规格变更消息,并立即使用刚协商的算法和密钥,发送加密的握手结束消息。服务端则回应密码规格变更消息,使用刚协商的算法和密钥,发送加密的握手结束消息。至此,握手过程结束,服务端和客户端可以开始进行数据安全传输。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。