简单的SSL四次握手涉及的交互过程整理

![SSL四次握手](https://img-blog.csdnimg.cn/20210118102844327.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Jvb2tpZV9NYW5pdG8=,size_16,color_FFFFFF,t_70#pic_center

交互过程的简短说明

在HTTP链接建立之前进行四次握手,从而客户度和服务端沟通好HTTP传输时对称加密的密钥

Client                                                TLSv1                                               Server

 ClientHello    
 *客户端支持的最高 SSL 协议的版本号、随机数、支持的机密套件列表*
 Version、Client Random、Cipher Suites
                                                      明文传输
                                                     -------->
                                                                                                                 ServerHello(选中的加密算法套件)
                                                                                                                 *服务器支持SSL协议的版本号、随机数、加密套件*
                                                                                                                 *Version、Server Random、Cipher Suites*
                                                                                                                 Certificate
                                                                                                                 *服务器发送的是一个证书链,一般包括根证书、服务器证书,会携带加密公钥*
                                                                                                                 Server Key Exchange(密钥交换算法所需要的额外参数)
                                                                                                                 Certificate Request(验证客户端证书的合法性)
                                                                                                                 ServerHelloDone(握手结束)
                                                      明文传输
                                                     <--------     
                           *这一阶段,双方就使用密码算法套件达成一致*
  Certificate(客户端证书,服务器开启双向认证时需要客户端提供)
  Client Key Exchange(加密的PreMasterSecret,私钥)
  *使用服务器公钥加密过的随机数Pre_Master_Secret,该参数用于后续生成主密钥*
  *与Server交换session key*
  ChangeCipherSpec(后续消息已经做好密码保护准备)
  *告知服务器,接下来的消息将采用新协商的加密套件和密钥进行通信*
  Enchypted Handshake Message(发送一个加密数据)
  Finished(握手结束)  
                                                      明文传输
                                                      -------->
                                                                                                                 New Session Ticket
                                                                                                                 ChangeCipherSpec(响应客户端,已经做好密码保护准备)
                                                                                                                 Encrypted Handshake Message(发送一个加密数据)
                                                                                                                 *验证通过则说明握手过程中的数据没有被篡改过,也说明服务器是之前交换证书的持有者*
                                                                                                                 Encrypted Alert
                                                                                                                 Finished(握手结束)
                                                                                                                 *利用Client random、Server random和Premaster secret*
                                                                                                                 *通过一定的算法生成HTTP链接数据传输的对称加密key – session key
                                                      明文传输*
                                                      <--------           

  Application Data        
  发送 "Hello, OpenSSL\r\n" 加密报文      
                                                      加密传输
                                                      -------->

名词解释:
TLS(TCP + SSL) Transport Layer Security 传输层安全性
Secure Socket Layer 安全套接字层
SSL技术上是应用层,研发角度是传输层

SSL建立握手连接目的:
1.身份的验证,client与server确认对方是它相连接的,而不是第三方冒充的,通过证书实现
2.client与server交换session key,用于连接后数据的传输加密和hash校验

要使用SSL协议,服务器至少有一个私有密匙和一个用于验证身份的证书。私有密匙在密匙交换算法中用到,证书将发送到客户端,以通知服务器端的身份。
如果SSL服务器要验证客户端的身份,那么客户端必须也有自己的密匙库(包含私有密匙和证书)。

参考连接:
证书的应用之一 —— TCP&SSL通信实例及协议分析(中)
安全协议系列(四)----SSL与TLS
SSL握手过程实例分析
SSL四次握手

SSL交换中涉及的证书、公钥、私钥、加密算法,有兴趣可以继续深入学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值