确定 Vertica 数据库的 TLS 模式

通过管理控制台为 TLS 配置 Vertica 时,必须配置安全模式以满足 Vertica 数据库的配置要求:服务器模式或相互模式。

要确定现有会话的 TLS 模式,请查询 SESSIONS 系统表:

=> SELECT session_id, user_name, ssl_state FROM sessions;
           session_id            | user_name | ssl_state
---------------------------------+-----------+-----------
 v_vmart_node0001-333611:0x1ab   | dbadmin   | mutual

要确定 Vertica 数据库的客户端-服务器 TLS 配置,请在 TLS_CONFIGURATIONS 系统表中查询“服务器 (Server)”:

=> SELECT name, certificate, ca_certificates, mode FROM tls_configurations WHERE name = 'server';
  name  |   certificate    |   ca_certificates   |   mode
--------+------------------+---------------------+-----------
 server | server_cert      | ca_cert,ica_cert    | VERIFY_CA
(1 row)

“模式 (Mode)”可以是以下几项之一,按安全性升序排列:

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

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

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

    • 另一台主机出示有效证书

    • 另一台主机不提供证书

    如果其他主机提供无效证书,则连接将使用纯文本。

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

  • VERIFY_FULL:如果 Vertica 验证其他主机的证书来自受信任的 CA,并且证书的 cn(通用名称)或 subjectAltName 属性与其他主机的主机名或 IP 地址匹配,则连接成功。

    请注意,对于客户端证书,cn 将用于用户名,因此 subjectAltName 必须与其他主机的主机名或 IP 地址匹配。

相互模式对应于 TRY_VERIFY 或更高版本,表示 Vertica 处于相互模式。在相互模式下,Vertica 将其服务器证书发送到客户端进行验证,然后使用 CA 证书(在本例中为“ca_cert”和“ica_cert”)验证客户端证书。

相反,服务器模式配置(不验证客户端证书)可能改用以下 TLS 配置:

=> SELECT name, certificate, ca_certificates, mode FROM tls_configurations WHERE name = 'server';
  name  |   certificate    |   ca_certificates   |   mode
--------+------------------+---------------------+-----------
 server | server_cert      |                     | ENABLE
(1 row)