SSL 参数
xSQL 配置文件可用于定义全局 SSL 参数(对应于 C API 的 mco_ssl_params_t 结构)。全局 SSL 参数在 ssl_params 部分中指定。对于 SmartEDB 高可用性、SmartEDB 集群或远程 SQL 通信,可在其各自的单独部分中指定特定组件的 SSL 参数。即使定义了全局 SSL 设置,组件特定的 SSL 支持默认也是禁用的。若要为组件启用 SSL 支持并继承全局设置,请在组件的配置中指定一个空的 ssl_params 部分。
各个设置的说明可在 target/xsql/readme.txt 文件中找到。
全局 ssl_params 部分由一组用大括号括起来的“name : value”对组成。例如:
ssl_params : {
verify_mode: ["verify_peer", "verify_fail_if_no_cert"],
ca_file: "../certs/ca.pem",
...
}
请注意,ssl_params 部分可以在多个层级中出现,具体如下:
最顶层:在此层级中,必须定义 ca_file 或 ca_path 参数,并且这些参数不能在其他 ssl_params 部分中重复定义。这是确保 SSL 证书验证安全性的关键设置。
在 ha_params 部分:此部分用于为 SmartEDB 高可用性配置安全参数(详情请参阅 xSQL HA 参数文档)。通过这些设置,您可以确保高可用性集群的安全通信。
在 cluster_params 部分:此部分用于为 SmartEDB 集群配置安全参数(详情请参阅 xSQL 集群参数文档)。这些设置有助于保护集群内的所有节点之间的通信安全。
在 sql_servers 向量的元素中:您可以在每个 SQL 服务器实例中单独配置 SSL 设置(详情请参阅 xSQL SQL 参数文档)。这使得每个服务器可以根据需要进行个性化的安全配置。
在 remote_client::shards 向量的元素中:您还可以在远程客户端的分片配置中指定 SSL 设置(详情请参阅 xSQL SQL 参数文档)。这确保了远程客户端与服务器之间的安全连接。
以下列出了 ssl_params 部分的可能选项,以及注释中指定的相应 C API 结构和值:
verify_mode
verify_mode: ["verify_peer", "verify_fail_if_no_cert"],
SSL 验证模式(mco_ssl_params_t::verify_mode)。这是由以下标志确定的对等验证模式:
verify_none:在服务器模式下,不会请求客户端证书;在客户端模式下,当未使用匿名密码时,将验证证书,但无论验证结果如何,握手都会继续
verify_peer:在服务器模式下,将请求并验证客户端证书;在客户端模式下,当未使用匿名密码时,将验证服务器证书;验证失败时将中止握手
verify_fail_if_no_cert:在服务器模式下,如果客户端未发送其证书,握手将终止;在客户端模式下被忽略;只能与 verify_peer 一起使用
verify_client_once:在服务器模式下,仅在初始 TLS 握手时请求客户端证书(但重新协商时除外);在客户端模式下被忽略;只能与 verify_peer 一起使用
默认值为 verify_peer + verify_fail_if_no_cert
cert_file_pem
cert_file_pem: "../certs/server.crt",
PEM 格式的证书文件路径(mco_ssl_params_t::cert_file_pem)。默认值为无。
pkey_file_pem
pkey_file_pem: "../certs/server.key",
PEM 格式的私钥文件路径(mco_ssl_params_t::pkey_file_pem)。默认值为无。
ca_file
ca_file: "../certs/ca.pem",
对应于 mco_ssl_load_verify_locations() 函数的 ca_file 参数。这必须是 PEM 格式的证书链文件;默认值为无。
ca_path
ca_path: "SmartEDB/ssl"
CA 证书存储路径;默认值为无。应按照 OpenSSL SSL_CTX_load_verify_locations() 页面中的说明设置此目录。
cipher_list
要使用的密码列表,以 OpenSSL 格式的字符串形式呈现(详情请参阅 OpenSSL 密码页面);默认列表为 "HIGH:!aNULL:!kRSA:!PSK:!SRP:!MD5:!RC4
max_cert_list
对等方证书链允许的最大大小(以字节为单位);默认值为 100 千字节。
verify_depth
证书链验证的最大深度;默认值为 10