Bootstrap

HTTPS的单向认证和双向认证是什么?有什么区别?

单向认证流程

HTTPS单向认证‌是指只有服务器向客户端证明其身份。在这种认证方式中,服务器会向客户端发送一个由可信证书颁发机构(CA)签发的SSL证书,客户端会验证这个证书以确保服务器的真实性和信任度。一旦客户端验证了服务器的证书并确认其可信,就会与服务器建立加密的通信连接。这种认证方法常用于大多数客户端-服务器通信。

单向认证流程中,服务器端保存着公钥证书和私钥两个文件,整个握手过程如下:

在这里插入图片描述

具体流程如下:

  1. 客户端发起建立HTTPS连接请求,将SSL协议版本的信息发送给服务器端。
  2. 服务器端将本机的公钥证书(server.crt)发送给客户端。
  3. 客户端读取公钥证书(server.crt),取出了服务端公钥。
  4. 客户端生成一个随机数(密钥R),用刚才得到的服务器公钥去加密这个随机数形成密文,发送给服务端。
  5. 服务端用自己的私钥(server.key)去解密这个密文,得到了密钥R。
  6. 服务端和客户端在后续通讯过程中就使用这个密钥R进行通信了。

客户端发送请求到服务器。
服务器发送自己的SSL证书给客户端。
客户端验证服务器的证书,确认其合法性和有效性。
双方使用对称密钥进行加密通信‌

双向认证流程

‌HTTPS双向认证‌不仅要求服务器向客户端证明其身份,还要求客户端向服务器证明其身份。在这种认证方式中,服务器和客户端都需要提供证书。服务器会验证客户端的证书,确认其身份,同时客户端也会验证服务器的证书。这种认证方式通常用于需要高安全性的场景,如银行和其他金融服务‌。

在这里插入图片描述

  1. 客户端发起建立HTTPS连接请求,将SSL协议版本的信息发送给服务端。
  2. 服务器端将本机的公钥证书(server.crt)发送给客户端。
  3. 客户端读取公钥证书(server.crt),取出了服务端公钥。
  4. 客户端将客户端公钥证书(client.crt)发送给服务器端。
  5. 服务器端使用根证书(root.crt)解密客户端公钥证书,拿到客户端公钥。
  6. 客户端发送自己支持的加密方案给服务器端。
  7. 服务器端根据自己和客户端的能力,选择一个双方都能接受的加密方案,使用客户端的公钥加密后发送给客户端。
  8. 客户端使用自己的私钥解密加密方案,生成一个随机数R,使用服务器公钥加密后传给服务器端。
  9. 服务端用自己的私钥去解密这个密文,得到了密钥R。
  10. 服务端和客户端在后续通讯过程中就使用这个密钥R进行通信了。

客户端发送请求到服务器。
服务器发送自己的SSL证书给客户端。
客户端验证服务器的证书。
客户端发送自己的证书给服务器。
服务器验证客户端的证书。
双方协商加密算法和生成对称密钥进行通信‌

区别

单向认证和双向认证的主要区别在于认证的方向和参与方。单向认证只需要客户端验证服务器的身份,而双向认证则需要双方都验证对方的身份。根据不同的安全需求选择合适的认证方式是非常重要的。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们处理,核实后本网站将在24小时内删除侵权内容。

在这里插入图片描述

;