客户端与服务器怎么交换加密套件?SSL/TLS握手过程?怎么协商

2020-07-03  本文已影响0人  风雅欢乐

双方在SSL/TLS协议握手过程中协商加密套件。SSL/TLS协议基本过程

  1. 客户端向服务器端索要并验证公钥
  2. 双方协商生成对话密钥
  3. 双方采用对话密钥进行加密通信

简单说,SSL/TLS通过四次握手,主要交换三个信息

  1. 数字证书:该证书包含了服务器公钥等信息,一般由服务器发给客户端,接收方通过验证这个证书是不是由可信赖的CA签发,或者与本地证书相对比,来判断证书是否可信。假如需要双向验证,则服务器和客户端都需要发送数字证书给对方验证;
  2. 三个随机数:这三个随机数构成了后续通信过程中用来对数据进行对称加密解密的对话密钥。客户端首先发送第一个随机数N1,然后服务器返回第二个随机数N2(这个过程同时把之前提到的证书发给客户端),这两个随机数都是明文的;第三个随机数,客户端用从数字证书中得到的服务器公钥进行加密,发送给服务器;服务器用自己的私钥解密获取第三个随机数N3。至此,双方都得到了N1+N2+N3,两端使用这三个随机数来生成对话密钥,后续的通信使用这个对话密钥进行加密;
  3. 加密通信协议:就是双方商量使用哪一种加密方式,加入两者支持的加密方式不匹配,则无法进行通信。

四次握手的步骤

  1. 客户端发出请求(ClientHello)

这一步,客户端主要向服务器提供以下信息:

  1. 服务器回应(ServerHello)

这一步服务器主要回复的信息:

  1. 客户端回应
  1. 服务器

ALPN(Application Layer Protocal Negotiation)应用层协议协商,是TLS的扩展,允许在安全连接的基础上进行应用层协议的协商。在TLS握手的ClientHello阶段,客户端发送支持的协议列表,ServerHello阶段,服务器会选择一种协议,如果客户端和服务器支持HTTP2,那么就可以使用HTTP2进行通信。

上一篇下一篇

猜你喜欢

热点阅读