![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交换中涉及的证书、公钥、私钥、加密算法,有兴趣可以继续深入学习