加强版的TCP握手 ---SSL/TLS握手

在这里插入图片描述

server_hello:
1.选择的协议版本号
2.选择的加密套件cipher suites
3.选择的加密算法
4.随机数random_S
5.证书链server_certificates
6.server_hello_done
cipher suites:
1.认证算法Au
2.密钥交换算法KeyExchange
3.对称加密算法Enc
4.信息摘要算法Mac

握手过程:

1.客户端对服务端发起连接请求client_hello,其中包含了自己支持的TLS协议版本号、支持的加密套件cipher、支持的压缩算法compression methods、随机数random_C以及扩展字段extentions
2.server端收到连接请求后,进行选择。完成后发送server_hello给客户端,server_hello包含服务端选择的TLS版本号,选择的加密套件,选择的压缩算法,生成的随机数random_S,证书链server certificates并且在最后通知客户端server_hello发送结束。
3.这一步客户端依次需要进行如下操作:
前提:验证服务端证书的合法性,检验证书的可信性,检查证书是否过期,是否被吊销以及证书的域名是否与访问的域名一致。只有证书验证通过,客户端才会进行后续的通讯步骤
a.客户端再次产生一个随机数Pre-master,并且使用证书上的公钥去加密(服务端只有使用证书的私钥才能解密,因此比较安全),并且发送给服务端。
b.把三个随机数(random_C,random_S,Pre-master)作为因子,计算得出加密密钥session secret,这个密钥即将作为双方通讯的协商密钥。
c.change_cipher_spec,客户端通知服务端以后通讯使用的加密算法和协商密钥
d.客户端将之前的通讯参数进行hash,并且与其他的关键信息一起生成一段数据,并且使用协商密钥和约定的加密算法进行加密。发送给服务端用于数据与握手验证。
4.服务端在收到客户端的握手信息之后,会进行如下几步:
a.服务端使用证书的私钥解密客户端发送过来的加密过的Pre-master,并且使用对称加密算法进行计算得到协商密钥
b.服务端将之前握手的信息进行hash。另外使用协商密钥和对称加密算法来解密客户端发送过来的encryped_handshake_message,验证数据的一致性。
c.验证过客户端发送过来的change_cipher_spec之后,服务端也发送change_cipher_spec给客户端
d.服务端根据当前的握手信息,使用协商的加密密钥和加密算法进行加密,并且发送给客户端
会话缓存:
(1)session ID
(2)session ticket

引用:https://www.cnblogs.com/barrywxx/p/8570715.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值