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小时内删除侵权内容。

相关推荐
比兔代理8 小时前
正向代理与反向代理技术辨析,为什么代理 IP 属于正向代理
服务器·网络·http·ip
Lsetea15 小时前
Nginx报No required SSL certificate was sent:mTLS客户端证书排查
运维·nginx·https·ssl·openssl
K成长日志1 天前
DALI协议-Part209-颜色控制
物联网·网络协议·iot·智能照明·智能建筑·dali
ZeroNews内网穿透1 天前
内网部署 Halo 建站,用 ZeroNews 免费内网穿透安全发布到公网(无公网 IP 也能 HTTPS 访问)
docker·https·内网穿透·nas·反向代理·halo·zeronews
IPdodo_1 天前
跨境 API 调用不稳定怎么办:出口、超时重试与链路监控的实践
网络·python·网络协议
碳基修炼2 天前
排查记:本地 devServer 是 http,浏览器却把 302 重定向升级成了 https
前端·http
szephyr2 天前
HTTPS 证书申请与自动续期:acme.sh + Let‘s Encrypt 完整记录
nginx·https·acme.sh·证书续期
那年窗外下的雪.2 天前
第 02 天:Linux 权限、inode、目录项与链接
学习·http
那年窗外下的雪.2 天前
AIDC 学习日志|第 27 天|EVPN 多归属收敛时间线与 Leaf2 接管验证
网络协议·学习·http·tcpdump
j7~2 天前
【Linux】三十八.C++ 手写 HTTP 服务器:裸 socket + fork 多进程,从 HTTP 报文解析到浏览器打开网页
linux·网络·网络协议·学习·http·网络编程