确定 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)