配置客户端-服务器 TLS

Vertica 为客户端-服务器 TLS 提供两种连接模式:

  • 服务器模式 下,客户端必须验证主机的证书。主机必须具有服务器私钥和证书。

  • 相互模式 下,客户端和主机必须各自验证对方的证书。主机必须具有服务器私钥、服务器证书和 CA 证书。

客户端-服务器 TLS 用于保护 Vertica 与客户端之间的连接步骤,而不是将这些客户端作为数据库用户进行身份验证的以下身份验证步骤。要为 TLS 连接配置身份验证或拒绝明文连接,请参阅 TLS 身份验证

使用 TLS 配置设置证书

此过程可为客户端-服务器 TLS 创建密钥和证书,并在预定义的 TLS 配置 server 中设置它们,这是 ServerTLSConfig 和 HttpsTLSConfig 的默认 TLS 配置。要创建自定义 TLS 配置,请参阅TLS 配置

  1. 根据您的用例生成或导入以下内容:

    • 服务器模式:服务器证书私钥、服务器证书

    • 相互模式:服务器证书私钥、服务器证书、CA 证书

  2. 根据您所需的配置运行以下命令。新连接将使用 TLS。

    • 要使用服务器模式,请为服务器的 TLS 配置设置服务器证书:

      => ALTER TLS CONFIGURATION server CERTIFICATE server_cert;
      
    • 要使用相互模式,请设置服务器和 CA 证书。此 CA 证书用于验证客户端证书:

      => ALTER TLS CONFIGURATION server CERTIFICATE server_cert ADD CA CERTIFICATES ca_cert;
      

      要使用多个 CA 证书,请用逗号分隔它们:

      => ALTER TLS CONFIGURATION server CERTIFICATE server_cert
         ADD CA CERTIFICATES intermediate_ca_cert, ca_cert;
      
  3. 启用 TLS(默认情况下禁用)。选择以下按安全性升序列出的 TLSMODE 之一。

    • DISABLE:禁用 TLS。此参数的所有其他选项都启用 TLS。

    • ENABLE:启用 TLS。Vertica 不检查客户端证书。

    • TRY_VERIFY:如果出现以下任一情况,则建立 TLS 连接:

      • 客户出示有效证书

      • 客户没有出示证书

      如果客户端提供无效证书,则连接将使用纯文本。

    • VERIFY_CA:如果 Vertica 验证客户端证书来自受信任的 CA,则连接成功。如果客户端不提供客户端证书,则连接使用纯文本。

    TLS 配置还支持 TLSMODE VERIFY_FULL,但客户端-服务器 TLS 和 HTTPS(参数分别为 ServerTLSConfig 和 HttpsTLSConfig)不支持此 TLSMODE,其行为类似于 VERIFY_CA

    对于服务器模式,选择 ENABLE

    => ALTER TLS CONFIGURATION server TLSMODE 'ENABLE';
    

    对于相互模式,选择 TRY_VERIFY 或更高版本:

    => ALTER TLS CONFIGURATION server TLSMODE 'VERIFY_CA';
    
  4. 验证 ServerTLSConfig 参数是否设置为 server TLS 配置:

    => SHOW CURRENT ServerTLSConfig;
      level  |      name       | setting
    ---------+-----------------+---------
     DEFAULT | HttpsTLSConfig  | server
    (1 row)
    

    如果没有,请设置 ServerTLSConfig 参数:

    => ALTER DATABASE DEFAULT SET ServerTLSConfig = 'server';
    

另请参阅