TLS 概述

要实现安全通信并验证数据完整性,您可以将 Vertica 和数据库客户端配置为使用 TLS。TLS 协议使用密钥和证书交换系统以及受信任的第三方(称为证书颁发机构 (CA))。证书的所有者和依赖于证书的另一方都必须信任 CA 来确认证书持有者的身份。

Vertica 还支持以下使用传输层安全 (TLS) v1.2 协议的身份验证方法。两种方法均会对传输中数据进行加密并验证其完整性:

  • 服务器模式 - 在服务器模式下,客户端在连接之前必须确认服务器的身份。客户端验证服务器的证书和公钥有效并且由客户端的可信 CA 列表中列出的证书颁发机构 (CA) 发布。这有助于防止中间人攻击。

  • 相互模式 - 在相互模式下,客户端和服务器在连接之前必须验证彼此的身份。

除了此部分详述的要求外,您还必须创建 TLS 身份验证记录以拒绝非 TLS 客户端连接。

TLS 握手过程

下面简要概述了客户端在服务器模式 下验证服务器身份时可能使用的“握手”过程。服务器在相互模式 下识别客户端身份时所采取的其他操作也标记为如此。

公钥和私钥对 - 密钥对由客户端和服务器生成。公钥的所有者必须由证书颁发机构验证。密钥对用于加密消息。例如,假设 Alice 想发送机密数据给 Bob。由于她只希望 Bob 读取数据,因此使用 Bob 的公钥加密数据。即使其他人获得了加密数据的访问权限,数据也仍然受到保护。因为只有 Bob 可以访问其相应的私钥,他是唯一可以将 Alice 的加密数据解密为原始形态的人。

证书 - 证书包含公钥,且用于标识密钥的所有者。它们由证书颁发机构 (CA) 颁发。

证书颁发机构 (CA) - 证书颁发机构是验证公钥所有者身份的受信任方。

客户端和服务器随机数 - 客户端随机数和服务器随机数是用于创建共享密钥的随机字符串,如果握手成功,该密钥会对通信进行加密。

  1. 在连接之前,服务器和客户端会生成自己的公钥和私钥对。然后,CA 会将标识证书分发给服务器和客户端,以获取它们各自的公钥。

  2. 客户端将其客户端随机数发送到服务器,并请求获取服务器的证书。

  3. 服务器将其证书和使用其私钥加密的服务器随机数发送给客户端。在相互模式 下,服务器还会请求获取客户端的证书。

  4. 相互模式 下,客户端发送其证书。

  5. 客户端使用证书来验证服务器是否拥有其公钥,然后使用服务器的公钥解密服务器随机数,以验证服务器是否拥有其私钥。

  6. 相互模式 下,服务器使用证书来验证客户端是否拥有其公钥。

  7. 服务器和客户端使用客户端和服务器随机数生成一个新的密码,称为会话密钥,用于加密未来的通信。