SSL VPN (原理二 握手协议)
来源:互联网 发布:系统架构图软件 编辑:程序博客网 时间:2024/04/29 15:15
Client Server
ClientHello -------->
ServerHello
Certificate*
ServerKeyExchange*
CertificateRequest*
<-------- ServerHelloDone
Certificate*
ClientKeyExchange
CertificateVerify*
[ChangeCipherSpec]
Finished -------->
[ChangeCipherSpec]
<-------- Finished
Application Data <-------> Application Data
如上:其中 带* 号的消息是可选的。
1、客户端主动发起情况下,SSL 握手协议由客户端先主动 client hello消息,在该消息里 客户端向服务端通告自已支持的密码算法列表、压缩算法、随机数、会话ID及ssl版本号。
此消息为客户端的握手交互的第1个消息,但在重协商情况下,此消息是为了应答服务端的request请求消息而被动发出的。
2、服务端收到客户端的client hello消息后,会从客户端支持的协商参数中选择本端支持的参数,带上自已的随机数、会话ID及本端的ssl版本号,然后封装为server hello消息发送给客户端。
3、如果需要认证服务端:通常情况下都需要验证服务端
1) 立即发送Certificate消息,服务端的证书(内含服务端的公钥)
2) 如果服务端没有证书或者服务端的证书只能用于签名,则需要发送ServerKeyExchange消息。此消息中含有服务端选择的密钥交换算法等。
4、如果同时认证客户端,则需要发送CertificateRequest消息。
5、ServerHelloDone 消息表示服务端的Server hello消息结束。
6、客户端收到服务端的证书请求消息后,会发送客户端的证书消息(Certificate消息)给服务端,此客户端的证书消息中含有客户端的公钥。
7、客户端发送ClientKeyExchange消息,此消息会将客户端的客户端的预主秘钥采取服务端的公钥进行加密,服务端收到此消息后利用服务端的私钥进行解密,这样服务端就可以知道客户端的预主秘钥,于是客户端和服务端就可以共享了此预主秘钥,从而客户端和服务端各自根据已经协商好的密码算法参数进行运算,最后双方产生一个相同的对称密钥,用于后续应用层数据加密。
8、CertificateVerify消息和证书消息一起发送给服务端,以便于服务端根据客户端的证书来验证客户端的签名的有效性。
9、客户端和服务端分别发送ChangeCipherSpec消息,用于通告对方握手交互已经完成,后续所有数据交互都已经采取协商好的对称密钥加密的了。
至此 SSL 握手已经完成,application data 已经利用双方共享的对称密钥加密,加密后的数据会被 记录层协议封装,然后发送出去并被对方接收。
- SSL VPN (原理二 握手协议)
- SSL的握手协议
- SSL的握手协议
- SSL握手协议分析
- SSL 握手协议详解
- ssl协议握手过程
- SSL协议握手过程
- SSL协议握手过程
- SSL协议握手详解
- SSL协议握手过程
- SSL 协议的握手协议
- SSL协议之握手协议
- SSL协议栈结构,ssl记录协议 ssl握手协议
- SSL协议的握手过程
- SSL协议以及握手过程
- SSL协议详细握手过程
- ssl握手协议中的CipherSuite
- SSL握手协议研究(1)
- hdu 2516 博弈
- LoadRunner_LoadRunner 11.0安装提示安装日志无法写入的错误
- js+php实现倒计时
- linux的物理内存与线性地址空间布局--2
- 分享一个购物网站购物车的小例子
- SSL VPN (原理二 握手协议)
- 【树形DP】 hdu3899 JLUCPC
- java代码性能优化总结
- 数据库三范式经典实例解析
- JAVA字符串转日期或日期转字符串
- Paxos在大型系统中常见的应用场景
- oralce 序列的使用
- 图像变换 -拉普拉斯变换(cvLaplace)
- myeclipse调试快捷键及代码注释