Skip to content

Latest commit

 

History

History
91 lines (71 loc) · 7.54 KB

File metadata and controls

91 lines (71 loc) · 7.54 KB

什么是 SSL?

安全套接字层(Secure Socket Layer)是一种加密安全协议。它最初由Netscape于1995年开发,旨在确保Internet通信中的隐私身份验证数据完整性。SSL在1999年更新为TLS

SSL/TLS 如何工作?

  • 隐私方面。SSL会对通过Web传输的数据进行加密。
  • 身份验证。SSL在两个通信设备之间启动称为握手的身份验证过程。
  • 数据完整性。SSL还对数据进行数字签名,验证数据是否在到达目标接收者之前被篡改过。

SSL和TLS是同一回事吗?

SSL是另一个称为TLS(传输层安全性)的协议的直接前身。在 1999 年,互联网工程任务组(IETF)提出了对 SSL 的更新。由于此更新是由 IETF 开发的,不再牵涉到 Netscape,因此名称更改为 TLS。SSL 的最终版本(3.0)与 TLS 的第一版本之间并无明显差异,应用名称更改只是表示所有权改变。

由于它们紧密地联系在一起,这两个术语经常互换使用并混为一谈。有些人仍然使用 SSL 来指代 TLS,其他人则使用术语“SSL/TLS 加密”,因为 SSL 仍然具有很大的知名度。

SSL 仍然没有落伍吗?

SSL 自 1996 年推出 SSL 3.0 以来未曾更新过,现已弃用。SSL 协议中存在多个已知漏洞,安全专家建议停止使用。实际上,大多数现代 Web 浏览器已彻底不再支持 SSL。

TLS 是依然在网络上实施的最新加密协议,尽管有许多人仍将其称为“SSL 加密”。这可能会使购买安全解决方案的消费者感到困惑。事实上,如今提供“SSL”的任何供应商提供的几乎肯定都是 TLS 保护,这已成为二十多年来的行业标准。但是,由于许多人仍在搜寻“SSL 保护”,因此这个术语在许多产品页面上仍然处于醒目位置。

什么是 SSL 证书?

  • SSL证书包含的信息:
    • 为其颁发证书的域名
    • 发给哪个人、组织或设备
    • 哪个证书颁发机构颁发它
    • 证书颁发机构的数字签名
    • 关联子域
    • 证书签发日期
    • 证书有效期
    • 公钥(私钥保密)
  • SSL证书由网站或应用程序的服务器存储并显示在 Web 上。
  • 证书颁发机构(CA)负责颁发SSL证书

SSL 证书有哪些不同类型?

有几种不同类型的 SSL 证书。一个证书可以应用于一个或多个网站,具体取决于类型:

  • 单域:单域 SSL 证书仅适用于一个域(“域”是网站的名称,例如 www.cloudflare.com)。
  • 通配符:与单域证书一样,通配符 SSL 证书仅适用于一个域。但是,它也包括该域的子域。例如,通配符证书可以覆盖 www.cloudflare.com、blog.cloudflare.com,和 developers.cloudflare.com,而单域证书只能覆盖第一个。
  • 多域:顾名思义,多域 SSL 证书可以应用于多个不相关的域。

SSL 证书还具有不同的验证级别。验证级别就像背景检查一样,并且级别会根据检查的彻底性而变化。

  • 域验证:这是最严格的验证级别,也是最便宜的级别。企业只需要证明他们控制着域。
  • 组织验证:这是一个需要亲力亲为的过程:证书机构直接联系请求证书的人员或企业。这些证书更受用户信赖。
  • 扩展验证:在发出 SSL 证书之前,需要对组织进行全面的背景检查。

TLS 握手期间会发生什么?

在TLS握手过程中,客户端和服务器将一起执行以下操作:

  • 指定他们将使用的TLS版本(TLS 1.0、1.2、1.3 等)
  • 决定他们将使用哪些密码套件(密码套件是一组用于建立安全通信连接的加密算法)
  • 通过服务器的公钥和SSL证书颁发机构的数字签名验证服务器的身份
  • 握手完成后生成会话密钥以使用对称加密

TLS 握手的步骤是什么?

TLS 握手是由客户端和服务器交换的一系列数据报或消息。TLS 握手涉及多个步骤,因为客户端和服务器交换完成握手所需的信息并使进一步的对话成为可能。

TLS 握手中的确切步骤将根据所使用的密钥交换算法的种类和双方支持的密码套件而有所不同。最常使用 RSA 密钥交换算法。它是这样的:

  • 'client hello' 消息:客户端通过向服务器发送“hello”消息来启动握手。该消息将包括客户端支持的 TLS 版本、支持的密码套件以及称为“客户端随机”的随机字节串。
  • “服务器问候”消息:作为对客户端问候消息的回复,服务器发送一条消息,其中包含服务器的SSL 证书、服务器选择的密码套件和“服务器随机”,即服务器生成的另一个随机字节串。
  • 身份验证:客户端使用颁发它的证书颁发机构验证服务器的 SSL 证书。这确认了服务器就是它所说的那个人,并且客户端正在与域的实际所有者进行交互。
  • premaster secret:客户端再发送一个随机字节串,即“premaster secret”。premaster secret 是用公钥加密的,只能由服务器用私钥解密。(客户端从服务器的 SSL 证书中获取公钥。)
  • 使用的私钥:服务器解密预主密钥。
  • 创建会话密钥:客户端和服务器都从客户端随机、服务器随机和预主密钥生成会话密钥。他们应该得到相同的结果。
  • 客户端已准备就绪:客户端发送一条使用会话密钥加密的“已完成”消息。
  • 服务器准备就绪:服务器发送使用会话密钥加密的“已完成”消息。
  • 实现安全对称加密:握手完成,使用会话密钥继续通信。

所有 TLS 握手都使用非对称加密(公钥和私钥),但并非所有握手都会在生成会话密钥的过程中使用私钥。例如,一个短暂的 Diffie-Hellman 握手过程如下:

  • 客户端问候:客户端发送带有协议版本、客户端随机数和密码套件列表的客户端问候消息。
  • 服务器问候:服务器回复其 SSL 证书、其选择的密码套件和服务器随机数。与上述 RSA 握手相反,在此消息中,服务器还包括以下内容(步骤 3):
  • 服务端数字签名:服务端使用自己的私钥加密客户端随机数、服务端随机数及其DH参数*。此加密数据用作服务器的数字签名,确定服务器具有与 SSL 证书中的公钥匹配的私钥。
  • 数字签名确认:客户端用公钥解密服务器的数字签名,验证服务器控制了私钥并且是它所说的那个人。客户端 DH 参数:客户端将其 DH 参数发送给服务器。
  • 客户端和服务器计算预主密钥:客户端和服务器使用它们交换的 DH 参数分别计算匹配的预主密钥,而不是客户端生成预主密钥并将其发送到服务器,如 RSA 握手。
  • 创建会话密钥:现在,客户端和服务器根据预主密钥、客户端随机数和服务器随机数计算会话密钥,就像在 RSA 握手中一样。
  • 客户端准备就绪:与 RSA 握手相同。
  • 服务器已准备就绪
  • 实现安全对称加密 *DH 参数:DH 代表 Diffie-Hellman。Diffie-Hellman 算法使用指数计算得出相同的预主密钥。服务器和客户端各自为计算提供一个参数,当它们组合在一起时,它们会在每一方产生不同的计算,结果是相同的。

要详细了解临时 Diffie-Hellman 握手和其他类型的握手之间的对比,以及它们如何实现前向保密,请参阅什么是 Keyless SSL?

常见的加密算法有哪些?

  • 常用的对称加密算法包括:
    • AES
    • 3-DES
  • 常用的非对称加密算法包括:
    • RSA
    • 椭圆曲线密码学