HTTPS 客户端与服务端的交互过程

一、客户端向服务端发起 HTTPS 请求。请求中包含了请求头、请求主体等信息。

1、这一步就是 tcp 的三次握手;

二、服务端接收到请求后,发送数字证书给客户端,以便客户端验证服务端身份。

1、这一步是 SSL/TLS 协议的握手过程,其目的是建立一个安全的通信管道,以便客户端和服务端可以进行加密通信。在这个过程中,客户端和服务端交换证书,并协商加密算法、生成对话密钥等信息;

2、具体的握手过程如下:

(1)客户端向服务端发送 Client Hello 消息,包括 SSL/TLS 的版本号、支持的加密算法、随机数a等信息。

(2)服务端向客户端发送 Server Hello 消息,包括 SSL/TLS 的版本号、选择的加密算法、随机数b等信息。

(3)服务端向客户端发送数字证书,证明自己的身份。

(4)客户端验证数字证书的有效性,如果验证通过,则通过两个随机数a和b,生成一个随机数作为 Pre-Master Secret,(Master Secret 是保证数据机密性的重要参数,它不同于客户端随机数。客户端和服务端都可以根据 Master Secret 计算出会话所需要的各种密钥,用于加密、解密和认证数据)并使用服务端公钥加密后发送给服务端。

(5)服务端使用自己的私钥解密 Pre-Master Secret,生成对话密钥,用于后续的加密通信。

(6)客户端和服务端分别发送 Finished 消息,验证握手过程的完整性和正确性。

注意:在 SSL/TLS 协议握手的最后一步,客户端和服务器都会发送一个 "finished" 报文,用来确认握手过程中所使用的密钥是否正确,以及验证握手过程的完整性。

       具体来说,客户端和服务器在握手过程中都计算出了一个 Finished 消息,这个 Finished 消息包含了握手过程中的所有消息和密钥材料的摘要。客户端先发送 Finished 消息给服务器,服务器接收到后会验证摘要是否正确,如果正确则发送自己计算出来的 Finished 消息给客户端,客户端也会验证摘要是否正确。如果验证都通过,就说明握手过程成功,可以开始传输数据了。

       通过交换 Finished 报文,可以保证握手过程中使用的密钥材料是正确的,并且验证整个握手过程的完整性,防止被中间人攻击等安全问题。

(7)握手完成后,客户端和服务端使用对话密钥进行加密通信。

注意:建立ssl连接后,每一次请求和响应都会带有MAC来保证数据完整性和机密性

        MAC指的是消息认证码(Message Authentication Code),是一种用于验证消息完整性和真实性的技术。在计算机通信中,应用层发送的数据经过传输层和网络层,最终到达对端的应用层,如果不进行保护,中间可能会被篡改、重放、伪造等攻击。为了保护数据的完整性和真实性,应用层通常会在数据中添加一个MAC。

        MAC是通过对消息和一个密钥进行加密算法计算而生成的一段固定长度的数据。发送方在发送消息前,会先计算出MAC,并将它附加在消息中发送出去。接收方收到消息后,会计算出MAC,并与消息中的MAC进行比较。如果两者相等,就可以确认消息是完整、真实的;否则就可以认为消息已被篡改或伪造。通常,发送方和接收方之间需要共享同一个密钥来计算和验证MAC。

三、客户端发送一个随机数给服务端,服务端接收到后,也发送一个随机数,并使用这两个随机数生成会话密钥(也就是公开密钥加密中使用的公钥)。

四、服务端使用数字证书中的公钥对会话密钥进行加密,并将加密后的会话密钥发送给客户端。

五、客户端收到加密后的会话密钥后,使用数字证书中的私钥对其进行解密,获得会话密钥。

六、客户端对请求使用会话密钥对请求主体进行加密,并发送给服务端。

七、服务端对响应信息使用会话密钥对进行加密,对客户端发来的数据进行数字签名摘要,并发送给客户端。

八、客户端接收到响应后,使用会话密钥对响应进行解密,并对数字签名进行验证,以确保数据的完整性和认证性。

九、客户端和服务端结束本次连接,释放资源。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值