网络学习(四)HTTPS中,SSL的单向认证与双向认证

发布于:2025-03-05 ⋅ 阅读:(12) ⋅ 点赞:(0)

一、什么是SSL?

SSL(Secure Sockets Layer,安全套阶层) 是一种 用于在互联网上建立加密链接 的协议,旨在确保客户端(如浏览器)与服务器之间的通信安全。SSL 通过加密数据传输,防止敏感信息(如登录凭证、信用卡号等)被窃取或篡改。SSL的后续版本称为 TLS(Transport Layer Security,传输层安全),但人们通常仍习惯称之为 SSL。

在 OSI/RM 七层网络模型中,SSL/TLS 协议位于 传输层

当然,传输层除了 SSL/TLS 协议之外,还有很多常用的其他协议,如下所示:

完整的《常用网络协议神图》可以参考小编之前的文章:

1.1 SSL 的主要功能

  1. 加密通信

    SSL 通过加密算法(如AES、RSA等)对传输的数据进行加密,确保数据在传输过程中即使被截获也无法被解读。

  2. 身份验证

    SSL 的身份认证可以防止中间人攻击,有以下两种形式:

    • 单向认证: 通过数字证书,只验证服务器的身份。
    • 双向认证: 通过数字证书,同时验证客户端和服务器身份。

    (这两种身份验证形式会在后面进行详细描述。)

  3. 数据完整性

    SSL 通过消息摘要算法(如:SHA-256)确保数据在传输过程中未被篡改。

1.2 SSL 的工作原理

SSL/TLS 协议通过以下步骤建立安全连接:

  1. 客户端发起请求

    客户端(如浏览器)向服务器发起连接请求,并告知支持的 SSL/TLS 版本和加密算法。

  2. 服务器响应并发送证书

    服务器返回选择的 SSL/TLS 版本和加密算法,同时发送自己的数字证书(包含公钥)。

  3. 客户端验证证书

    客户端验证服务器证书的有效性(如是否由受信任的 CA 签发、是否过期等)。

  4. 密钥交换

    客户端生成一个对称密钥(会话密钥),用服务器的公钥加密后发送给服务器。

  5. 建立加密通信

    服务器用私钥解密获取对称密钥,双方使用该密钥加密后续通信。

1.3 SSL 的核心组件

  1. 数字证书

    由受信任的证书颁发机构(CA)签发,包含公钥、持有者信息和 CA 的数字签名。

  2. 加密算法

    • 对称加密(如AES):用于加密实际数据传输。
    • 非对称加密(如RSA):用于密钥交换和身份验证。
  3. 协议版本

    • SSL 1.0SSL 2.0SSL 3.0 -- 已淘汰
    • TLS 1.0TLS 1.1TLS 1.2TLS 1.3 -- 目前广泛使用

1.4 SSL 的应用场景

  1. 网站安全(HTTPS)

    SSL/TLS 是 HTTPS 协议的基础,用于保护网站与用户之间的通信。

  2. 电子邮件安全

    用于加密电子邮件传输(如SMTP、IMAP、POP3协议)。

  3. 虚拟专用网络(VPN)

    SSL VPN 用于远程用户安全访问企业内部资源。

  4. API 通信

    保护客户端与服务器之间的 API 调用。

1.5 SSL 与 TLS 的区别

  • SSLTLS 的前身,TLSSSL 的升级版本。
  • SSL 3.0 是 SSL 的最后一个版本,TLS 1.0 基于 SSL 3.0 改进而来。
  • TLS 在安全性、性能和扩展性上优于 SSL,目前广泛使用的是 TLS 1.2TLS 1.3

二、SSL 单向认证、双向认证

2.1 SSL 单向认证

SSL 单向认证只需要验证 服务端 的身份,无需验证客户端的身份。

SSL 单向认证的流程如下图所示:

文字过程描述如下:

  1. 客户端的浏览器向服务器传送 客户端 SSL协议的版本号加密算法的种类、产生的 随机数,以及其他服务器和客户端之间通讯所需要的各种信息。

  2. 服务器向客户端传送 SSL协议的版本号加密算法的种类随机数 以及其他相关信息,同时服务器还将向客户端传送自己的 证书

  3. 客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:

    • 证书是否 过期
    • 发行服务器证书的CA是否 可靠
    • 发行者证书的公钥能否正确解开服务器证书的 “发行者的数字签名”
    • 服务器证书上的 域名 是否和服务器的实际域名相匹配。
    • 如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。
  4. 用户端随机产生一个用于后面通讯的"对称密码",然后用服务器的 公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的 “预主密码” 传给服务器。

    也就是说利用 非对称加密算法A传输对称加密的密钥B,后续都用密钥B传输,提高效率。

  5. 如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的 证书 以及加密过的 “预主密码” 一起传给服务器。

  6. 如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:

    • 客户的证书使用日期是否 有效
    • 为客户提供证书的CA是否 可靠
    • 发行CA的公钥能否正确解开客户证书的发行CA的 数字签名
    • 检查客户的证书是否在 证书废止列表(CRL) 中。
    • 检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的 私钥 解开加密的 “预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。
  7. 服务器和客户端用相同的主密码,即 “通话密码”,一个 对称密钥 用于SSL协议的安全数据通讯的加解密通讯。同时在SSL通讯过程中还要完成数据通讯的 完整性,防止数据通讯中的任何变化。

  8. 客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的 主密码 为对称密钥,同时通知服务器客户端的握手过程结束。

  9. 服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的 主密码 为对称密钥,同时通知客户端服务器端的握手过程结束。

  10. SSL的握手部分结束,SSL安全通道的数据通讯开始,客户和服务器开始使用相同的 对称密钥 进行数据通讯,同时进行通讯完整性的检验。

注意:SSL单向认证只要求站点部署了ssl证书就行,任何用户都可以去访问(IP被限制除外等),只是服务端提供了身份认证。

2.2 SSL 双向认证

SSL 双向认证需要验证 客户端服务端 的身份。

SSL 双向认证的流程如下图所示:

文字过程描述如下:

  1. 浏览器发送一个连接请求给安全服务器
  2. 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器。
  3. 客户浏览器检查服务器送过来的证书 是否是由自己信赖的 CA中心(如沃通CA)所签发的。如果是,就继续执行协议;如果不是,客户浏览器就给客户一个警告消息:警告客户这个证书不是可以信赖的,询问客户是否需要继续。
  4. 接着 客户浏览器比较证书里的消息,例如 域名公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户浏览器认可这个服务器的合法身份。
  5. 服务器要求客户发送客户自己的证书。收到后,服务器验证客户的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得用户的 公钥
  6. 客户浏览器告诉服务器自己所能够支持的通讯对称密码方案
  7. 服务器从客户发送过来的密码方案中,选择一种 加密程度最高的密码方案,用客户的 公钥 加过密后通知浏览器。
  8. 浏览器针对这个密码方案,选择一个 通话密钥,接着用服务器的 公钥 加过密后发送给服务器。
  9. 服务器接收到浏览器送过来的消息,用自己的 私钥 解密,获得 通话密钥
  10. 服务器、浏览器接下来的通讯都是用对称密码方案对称密钥 是加过密的。

2.3 总结:SSL 单向认证和双向认证的区别

  1. 证书要求
    • SSL 单向认证: 仅服务端需要持有证书,客户端无需证书。
    • SSL 双向认证:服务端和客户端均需持有证书。
  2. 认证过程
    • SSL 单向认证:客户端验证服务端证书的有效性,服务端无需验证客户端身份。服务端向客户端发送的密码方案是未加密的,但这并不影响整体通信的安全性。
    • SSL 双向认证:客户端和服务端互相验证对方证书的有效性,确保双方身份可信。
  3. 适用场景
    • SSL 单向认证:适用于大多数 Web 应用(如电商、社交平台等),用户数量庞大,通常无需在通信层对客户端进行身份验证。
    • SSL 双向认证:适用于对安全性要求较高的场景(如金融行业应用对接),需要对客户端进行严格的身份验证,以确保通信双方的可信性。
  4. 性能与复杂性
    • SSL 单向认证:实现简单,性能开销较低,适合高并发场景
    • SSL 双向认证:实现复杂,性能开销较高,适合对安全性要求极高的场景

整理完毕,完结撒花~ 🌻





参考地址:

1.SSL 单向认证和双向认证说明,https://cloud.tencent.com/document/product/214/54254

2.【ssl认证、证书】SSL双向认证和SSL单向认证的区别(示意图),https://blog.csdn.net/m0_45406092/article/details/114638087


网站公告

今日签到

点亮在社区的每一天
去签到